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

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

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

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

jQuery

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

Q&A

1回答

14866閲覧

Ajax通信後のJqueryプラグイン(colorbox)が正常に動作しません

TakuHosoya

総合スコア33

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2016/01/25 09:40

編集2016/01/27 05:11

jquery及びプラグインのcolorboxを使っています。

ajaxで取得したデータを取得したのち

javascript

1var addHTML = hogehoge; 2var element = document.getElementById('hoge'); 3$(element).prepend(addHTML);

として、colorboxで表示するインライン部分を動的に生成しています。

しかし、その動的に生成した要素をクリックしてもモーダルウィンドウが表示されません。
しかし、一度モーダルウインドウを閉じた後、それ以降は正常にモーダルウインドウが表示されます。

なお、上記スクリプト実行後

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.

というエラーがコンソールには表示されています。

状況がうまく伝わらないかもしれず恐縮ですが、何が起きているのかもわからないので、考えられそうな原因を教えていただけると嬉しいです。

<追記>
改めて現象を整理すると
①footerでjquery及びcolorboxを読み込み。
②静的な物のクリック時は正常にcolorboxが機能。
③ページ内のテキストボックスから入力値を読み取り、$.postでphpに送信、DB内で合致するデータを引っ張り出し、colorboxで必要とされる記述通り、最初に掲示した様に生成。
④生成したものをクリックするとcolorboxが正常に機能せず、動的に生成した#hogehoge部分を表示するはずが、ページ全体をインラインとして表示。コンソールにエラー
⑤1度モーダルウィンドウを閉じ、改めて同じ場所をクリックすると正常に動作
となります。

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

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

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

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

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

unau

2016/01/27 21:11

(1) jQuery や colorbox プラグインのバージョンも明記するとよいのではないでしょうか。たぶん、バージョンに関係のない問題のように思えますが。 (2) 「静的な物 (というのは、動的に DOM に追加したものではなくて、最初から HTML に書かれていた要素のことと推察いたします)」に colorbox を適用するところのコード (たとえば、$('.target').colorbox() とか)、それから、「生成したもの (prepend() で DOM に追加したものと推察いたします)」に colorbox() を適用したところのコードなど、具体的なコードを示していただかないと原因の特定は難しいと思います。 (3) ご質問の内容とは関係なく、情報の追加・修正の依頼でもないのですが、jQuery をお使いなのに document.getElementById() を使う理由は何かありますか。すなわち、$('#hoge').prepend(addHTML) ではまずい理由はありますか。
guest

回答1

0

エラーメッセージを見る限り、XMLHttpRequestを同期読み込みで行っているのが原因っぽいです
こちらが詳細になります
https://xhr.spec.whatwg.org/#the-open()-method
-下記引用-
Synchronous XMLHttpRequest outside of workers is in the process of being removed from the web platform as it has detrimental effects to the end user's experience. (This is a long process that takes many years.) Developers must not pass false for the async argument when the JavaScript global environment is a document environment. User agents are strongly encouraged to warn about such usage in developer tools and may experiment with throwing an InvalidAccessError exception when it occurs.

簡単に意訳すると、
同期読み込みをワーカー以外で行うのはユーザー体験を損なうからWeb標準から外されることになった
そのような使い方をした場合にDeveloperToolsの中で警告を出し、実験的に例外を投げることになる

といった感じだと思います(ほぼ直訳です)

投稿2016/01/26 02:21

nagata_se

総合スコア50

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

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

TakuHosoya

2016/01/26 11:02

nagata_seさん 回答ありがとうございます! 自分でもエラーメッセージをググっているうちに、同じような意訳までは行きつくことが出来ました。 自分でXMLHttpRequestに関した記述等は行っておらず、問題は他にある様に考えています。 jquery自体でエラーメッセージが発生している様なので ajax通信⇒データを取得⇒colorboxに送信⇒jqueryと動いていると思い、そのどこに問題があるのか、全く見当がつかず困っております。 2度目以降のクリックや、他のcolorboxを利用した部分(問題になっている部分と構造は一緒で静的なものです。)では正しく動作するため 『ワーカー以外では』 というのが問題の原因な気がしています。 ただ、『ワーカー(=Webworker)』については自分で調べてみても参考になるものが見当たらず、解決策に行き当たりません… 何かヒントになりそうなものが思い当れば、ご教授頂ければ幸いです。 ※なお、JavaScriptは"超"初心者です
nagata_se

2016/01/27 00:19

ご自分ではXMLHttpRequestに関する記述を行っていらっしゃらないのですね? てっきりAjaxに絡めているのかと思いました。 そうなりますと、colorboxが何かしている・・・んですかね? 一応、下記がworkerに関するサイトになります。 https://developer.mozilla.org/en-US/docs/Web/API/Worker そしてこちらが日本語のXMLHttpRequestに関するページで、ページ中ほどにworkerのサンプルが乗っていますので、参考にしてください。力及ばず申し訳ない。 https://developer.mozilla.org/ja/docs/XMLHttpRequest/Synchronous_and_Asynchronous_Requests
TakuHosoya

2016/01/27 05:09

ありがとうございます。 現象をもう少し詳細に追記したので、もしまた何か思い当ることがあれば、コメント頂ければ幸いです。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問