繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM