簡體   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