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

时间:2014-07-14 16:00:38

标签: javascript jquery ajax firefox

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

我正在使用JQuery 1.7.1。

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

2 个答案:

答案 0 :(得分:39)

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

如:

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

答案 1 :(得分:15)

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

使用jQuery时,您可以通过在async: false的设置对象中指定jQuery.ajax()来执行此操作。

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