JavaScriptのconsole.logでエラーが発生します: "Synchronous XMLHttpRequest on main thread is deprecated..."

Firefoxのデバッガを使わずに様々な変数の状態を確認するために、コンソールにログを追加しています。

しかし、main.js ファイルの中で console.log を追加した多くの場所で、自分自身への愛らしい小さな手書きのメッセージの代わりに、以下のようなエラーが表示されます。

メインスレッドでのXMLHttpRequestの同期は、エンドユーザー'の体験に有害な影響を与えるため、非推奨です。詳しいヘルプは http://xhr.spec.whatwg.org/

このエラーが発生しないように、console.logの代替品やラッパーをコードに追加することはできますか?

私のやり方が間違っているのでしょうか?

これは、私が怠け者で、返されるコンテンツの一部としてscriptタグを含んでいたときに起こりました。このように

部分的なHTMLコンテンツです。

<div> 
 SOME CONTENT HERE
</div>
<script src="/scripts/script.js"></script> 

少なくとも私の場合は、xhrでそのようなHTMLコンテンツを返すと、jQueryがそのスクリプトを取得するための呼び出しを行うようです。その呼び出しは非同期フラグをfalseにして行われますが、これは読み込みを続けるためにスクリプトが必要だと仮定しているからです。

このような状況では、何らかのバインディングフレームワークを検討して、JSONオブジェクトを返すようにした方が良いでしょう。また、バックエンドやテンプレートによっては、スクリプトのロード方法を変更することもできます。

また、jQuery's getScript()を使って関連するスクリプトを取得することもできます。これはjQueryの例をそのままコピーしたものですが、この方法でスクリプトが読み込まれても警告は出ていません。

**例

<script>
var url = "/scripts/script.js";
$.getScript(url);
</script>

[http://jsfiddle.net/49tkL0qd/][1]

解説 (11)

警告メッセージは、メインスレッド内のXMLHttpRequestリクエストで、asyncフラグがfalseに設定されていることが原因である可能性があります(MAY)。

https://xhr.spec.whatwg.org/#synchronous-flag

ワーカー外の同期XMLHttpRequestは、有害な影響を与えるため、Webプラットフォームから削除されようとしています。 エンドユーザーに有害な影響を与えるため、Webプラットフォームから削除される予定です。 エンドユーザーに悪影響を及ぼすため、Webプラットフォームから削除される予定です。(これは、何年もかかる長いプロセスです。 年もかかる長いプロセスです)。開発者は、JavaScriptのグローバル環境が非推奨の場合、async引数にfalseを渡してはいけません。 開発者は、JavaScriptのグローバル環境がドキュメント環境の場合、async引数にfalseを渡してはいけません。ユーザーエージェント ユーザーエージェントは、開発者ツールでそのような使用方法を警告することが強く推奨されます。 ユーザーエージェントは、開発者ツールでこのような使い方を警告することが強く推奨されます。 が発生した場合に InvalidAccessError 例外を投げることを試してみてください。

将来の方向性としては、ワーカースレッドでのXMLHttpRequestsのみを許可することです。このメッセージは、そのための警告を意図しています。

解説 (3)

私も同じ問題に直面していましたが、async: trueを記述することで解決できました。デフォルトではtrueなのですが、明示的に書くとうまくいきました。

$.ajax({
   async: true,   // this will solve the problem
   type: "POST",
   url: "/Page/Method",
   contentType: "application/json",
   data: JSON.stringify({ ParameterName: paramValue }),
});
解説 (3)