質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
モーダルダイアログ

モーダルダイアログとは、ユーザーに重要な情報を表示するときに用いられる視覚的なダイアログのことを指します。これらのダイアログは他のすべてのコンテンツの上に表示され、ユーザーの入力を受けるまでアプリケーションフローは停止されます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

2044閲覧

divタグを理解したい

k499778

総合スコア599

モーダルダイアログ

モーダルダイアログとは、ユーザーに重要な情報を表示するときに用いられる視覚的なダイアログのことを指します。これらのダイアログは他のすべてのコンテンツの上に表示され、ユーザーの入力を受けるまでアプリケーションフローは停止されます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2017/05/14 12:39

編集2017/05/14 13:52

現在Java,javascript(jQuery),tymeleafを使ってLINEのバナーを実装しようとしています。

質問があるのですが、
結論から言うと、

ページ上でなく、モーダルダイアログ上に「LINEで送る」バナーを設置すると初期表示時にdivタグがiframeタグに変わり、バナーが正常に表示されなくなるのはどういった原因が考えられるでしょうか?

リンク先(https://media.line.me/en/how_to_install#lineitbutton)を参考に以下のタグを設置しました。

javascript

1<div class="line-it-button" data-lang="en" data-type="share-d" data-url="https://media.line.me/en/how_to_install#lineitbutton" style="display: none;"></div> 2 <script src="https://d.line-scdn.net/r/web/social-plugin/js/thirdparty/loader.min.js" async="async" defer="defer"></script>

これをページ上に設置すると正常に表示され、バナーとして機能します。

しかしモーダルダイアログ上に設置すると、正常に表示されないのです。
正常に表示されないとは、divタグがiframeタグに変わり、座標位置がtop:0,left:0となり、おかしな位置に隠れており、見えません。

モーダル上でこのような現象が起きるので、
このモーダルのライブラリであるjsファイルが初期表示時に何か行なっているとは思うのですが、該当箇所が大きかったり、ライブラリの管理がままならなくて調べづらかったりで、どこを直せばいいか、何が影響しているのかわからずにいます。

もしこのような現象を体験したことがある、知っている、どのような対応をしたら直るなどといったアドバイスを頂ける方がいれば是非教えて頂けると助かります。よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/14 12:41

モーダル部分のコードの追記をお願いします
k499778

2017/05/14 12:45

現状把握できておりません。
kei344

2017/05/14 14:07

書かれている状況が再現するコード(HTML/CSS/JavaScriptなど)か、再現するURLを提示されたほうが回答を得やすいと思います。
T_sa

2017/05/15 02:31

モーダル上にバナーを設置したときのみiframeに変わるのか、通常のページに設置した時もiframeに変わるのか等わかりませんか?
k499778

2017/05/15 03:04

モーダル上に設置したときのみです。通常はdivのままです。
guest

回答2

0

tymeleaf(Thymeleafでしょうか)やLINEバナーを利用したことがないので不明な点もありますが、現象が発生する可能性として以下が想定されます。

・モーダルダイアログを実現しようとするライブラリ内で置き換えられている
・Thymeleafで置き換えられている

すでにコメントで記載されていることですが、問題が発生した場合、最小のコードで再現する状況を作り出すことで、どの部分に問題があり、どの部分に問題がないかを切り分けることが解決への早道だと思います。

このモーダルのライブラリであるjsファイルが初期表示時に何か行なっているとは思うのですが、該当箇所が大きかったり、ライブラリの管理がままならなくて調べづらかったりで、どこを直せばいいか、何が影響しているのかわからずにいます。

上記の記載だけで的確に問題を指摘することは困難だとご認識はされていると思いますが、貴殿が想定される問題をまずは切り分けるためにも、上記を行うことがよろしいかと。また、最小限のコードにすることで、よりエキスパートな技術者からの回答もえられやすくなると思います。
また、モーダルダイアログを実現するための方法は様々ありますので、既存のコード・ライブラリに拘らず、別の方法で試すことで、問題が解決できる可能性もあるので、その観点でもコードを整理・最小化することに意味が出てきます。

投稿2017/05/15 09:47

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k499778

2017/05/15 11:42

回答ありがとうございます。 私もその認識は持っております。 少し情報を追記致しましたのでもしよろしければご覧いただければと思います。
guest

0

自己解決

状況の追記です。

モーダルダイアログはdivタグで生成されおり、初期表示時display:noneで表示されていない状態です。
それをモーダル呼び出しボタン押下時にjavascriptによってshow()し、表示させていました。
とくにライブラリを使うでもなく、単純にjavascriptによってのみ構成されていたように思います。

LINEのバナーが表示されないのは初期表示時にモーダルが非表示になっており、その中にいるバナーが座標をとれなかったのかもしれません。

そのため、制御としては初期表示時にモーダルを一時的に表示するなどして座標を取れるようにし、LINEバナーを本来の位置に表示するようにする必要があるかもしれません。

divタグがiframeタグに変わるところはまだ解析できていません。

投稿2017/05/15 11:41

k499778

総合スコア599

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k499778

2017/05/16 09:37

divタグがiframeタグに変わる理由は判断がつきませんでした。 他のやり方として、LINE画像を設置し、その画像をアンカータグで囲い、そこでLINEを起動するurlをhref属性に設定するという措置を取りました。 サンプルコードは以下です。 <a href="http://line.me/R/msg/text/?LINE%E3%81%A7%E9%80%81%E3%82%8B%0D%0Ahttp%3A%2F%2Fline.me%2F"> <img src="[ボタン画像のURL]" width="[ボタン幅]" height="[ボタン高さ]" alt="LINEで送る" /> </a> 参考:http://qiita.com/katsunory/items/4d90e24e389a587d3690
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問