特に、colorboxやmodalで親画面から子画面を呼び出す場合に良く出るんですが、
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience.
というエラーに遭遇することがあります。
これが出てしまう場合、原因はajaxで同期的にリモートのコンテンツを読み込んで書き換えようとしているからです。
なので、対処としては、ajax呼び出しを非同期呼び出しにすればいいので、下記サンプルのように、
function call_ajax() { console.log('call ajax'); $.ajax({ url:'/some.html', async:true, type:'GET', }) // Ajaxリクエストが成功した時発動 .done( (data) => { console.log('success'); }) // Ajaxリクエストが失敗した時発動 .fail( (data) => { alert("Error: " + xhr.status + ": " + xhr.statusText); }) // Ajaxリクエストが成功・失敗どちらでも発動 .always( (data) => { }); }
「async:true」がajaxに渡るようにするとワーニングが出ないようになります。
上記の対処でも、どうしてもエラー出てしまう場合
まれに、上記の対応を行なっても、ワーニングが出続けてしまうことがあります。
そんなときは、そのajaxの関数の呼び出しの度に、ワーニングが出るか、注意深く見てみましょう。
初回の呼び出しのときにしかワーニングが表示されない場合は、以下の可能性も疑ってみると良いと思います。
ajax呼び出しで、別ページののコンテンツを呼び出している場合、そのページ上部でjavascriptのファイル(jsファイル)を読み込んでいないかを確認しましょう。
その場合、ページ読み込み時に、そのjsファイルを同期的にロードするため、当該エラーが表示されてしまうことがあります。
私は、結構これでハマリました。。。
お役に立てば幸いです。