[英]Tenability of solution to synchronous XMLHttpRequest deprecation warning
这个问题在很多论坛上都有报道,包括这个,我找到了一个显然是独一无二的解决方案,虽然我不确定它是否明智。 它确实有效,但它可能是更接近 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/ 上的相关信息指出:
当 JavaScript 全局环境是文档环境时,开发人员不得为 async 参数传递 false。
我有许多其他人使用 JQuery 编写的复杂的、缩小的例程,我不是专家,不知道在这些例程中会在哪里创建错误。
然后让我在 jquery.js 文件中简单地将options.async
替换为true
,如下所示:
xhr.open( options.type, options.url, true, options.username, options.password );
瞧! 该问题在控制台报告错误的每个浏览器上都消失了。 (在缩小的 JQuery.min.js 文件中查找和编辑相关代码很容易;在所有其他依赖于 JQuery 的例程中找到它,如果不是不太可能的话,也会很乏味。)
但我的问题是:这个解决方案的明显破解是不明智的吗? 我的网站确实有效,并且使用 JQuery 的所有例程都没有问题。 评论非常感谢。
问题在于 JQUERY 可分发本身
问题的原因在当前版本 2.1.4 中的 jquery.js 文件中。 尽管将options.async
为只应传递值true
的弃用参数,但 jquery.js 文件本身使用文件中先前定义的数据调用 xhr.open 文件,并将参数设置为false
。 这是 jquery.js 文件中的违规例程:
jQuery._evalUrl = function( url ) {
return jQuery.ajax({
url: url,
type: "GET",
dataType: "script",
async: false,
global: false,
"throws": true
});
};
当async
设置为true
,问题就消失了,并且不再需要我之前使用的 hack 解决方案。
现在,严肃地说,这是一个真正的 JQuery 专家应该评论的事情。 为什么 JQuery 初始化文件会违反它建议用户遵循的使用标准?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.