不推荐在主线程上使用同步XMLHttpRequest

1DM*_*DMF 37 javascript ajax firefox jquery

为什么此消息突然出现在Firefox控制台中?

我正在使用JQuery 1.7.1.

在我的应用程序中我可以做什么导致此消息开始出现?

Jas*_*ter 39

使用jQuery将脚本标记附加到文档将导致它使用async:false加载脚本并触发此警告.

如:

var script = $("<script></script>");
script.attr("src", player.basepath + "whatever.js");
$(document.body).append(script);
Run Code Online (Sandbox Code Playgroud)

  • 有趣的发现. (4认同)
  • 我最近在使用 Knockout.js html 绑定时偶然发现了这个警告。如果 jQuery 可用,knockout 会在幕后使用它来管理 html 绑定的 dom 操作。如果正在渲染的 html 字符串中有任何脚本标签,则会触发此警告。 (2认同)

nma*_*ier 15

您有代码执行同步XHR/Ajax,即在完成之前阻塞的Ajax请求.

使用jQuery时,您可以通过async: false在设置对象中指定jQuery.ajax().

解决方案是重构执行同步请求的任何代码,即杀死所有实例jQuery.ajax({async: false})和辅助函数,以及xhr.open(..., false)包含您可能使用的第三方库中的代码.此外,由于jQuery 1.7.1在Web标准上相当陈旧,我不确定在某些情况下jQuery版本是否仍然执行内部同步请求,您还必须检查它并升级jQuery(如果是这样).