解决同步XMLHttpRequest弃用警告的可行性

时间:2015-11-11 20:59:23

标签: javascript jquery ajax

许多论坛都报道了这个问题,包括这个问题,我找到了一个显然独特的解决方案,尽管我不确定它是否明智。它确实有效,但它可能是更接近JQuery开发或其成员之一可能能够以权威回答的东西。

许多其他人和我遇到的问题是带有此文本的控制台错误消息:

  

主线程上的同步XMLHttpRequest因不推荐使用   它对最终用户的体验产生不利影响。如需更多帮助,   检查http://xhr.spec.whatwg.org/

在我的情况下,在许多其他情况下,它引用了jquery.js文件,特别是这一行

xhr.open( options.type, options.url, options.async; options.username, options.password );

http://xhr.spec.whatwg.org/州的相关信息:

  

当开发人员不能为async参数传递false   JavaScript全局环境是一个文档环境。

我有很多复杂的,缩小的例程,由其他人使用JQuery编写,我没有专家在这些例程中找到 where 来创建错误。

然后让我在jquery.js文件中简单地用true代替options.async,如下所示:

xhr.open( options.type, options.url, true, options.username, options.password );

瞧!在控制台报告错误的每个浏览器上问题都消失了。 (在缩小的JQuery.min.js文件中查找和编辑相关代码非常简单;在所有其他依赖于JQuery的例程中找到它将会很乏味,如果不是轻微不可能的话。)

但我的问题是:这种明显的解决办法是不明智的吗?我的网站 工作,并且没有任何使用JQuery的例程存在问题。评论非常感谢。

1 个答案:

答案 0 :(得分:0)

问题出现在自己的观察中

问题的原因在于当前版本2.1.4中的jquery.js文件。尽管将options.async记录为不应该传递值true的已弃用参数,但jquery.js文件本身使用文件中先前定义的数据调用xhr.open文件,参数设置为{ {1}}。这是jquery.js文件中的违规例程:

false

jQuery._evalUrl = function( url ) { return jQuery.ajax({ url: url, type: "GET", dataType: "script", async: false, global: false, "throws": true }); }; 设置为async时,问题就会消失,不再需要我之前使用的黑客解决方案。

现在,说真的,这是一个真正的JQuery专家应该评论的东西。为什么JQuery初始化文件违反了建议用户遵循的非常标准的使用方法?