chrome控制臺 提示禁告:Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec./.
但是,【注意我這里說的是但是,一般也很重要】:我是連警告框都無法容忍的,因為我就是這么極客 這么帥!。那么這個煩人的黃色警告,到底是什么意思和怎么解決掉呢? 結論和現(xiàn)象: 我發(fā)現(xiàn)有不少同學,也遇到過這個問題和疑惑,并且根據(jù)網(wǎng)絡其他大神的總結和分析,完全解決不掉!那是因為他們總結的:只知其一,不知其二; 那么我們來分析下為什么會出現(xiàn)這樣的場景和 在什么情況下會出現(xiàn)這個警告,并且怎么解決! ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 翻譯結果:大體意思是 XMLHttpRequest 【ajax】發(fā)送請求,是在瀏覽器js的主線程上,ajax同步發(fā)送請求引起的,這樣會引起很不好的用戶體驗,可能導致瀏覽器卡死等等! 1.AJAX 請求 2.主線程-單線程 3.同步請求引起的阻塞,卡死 總結:一個是Ajax請求分異步和同步2種模式。如果請求是同步的,在請求返回之前線程會一直阻塞,如果請求是在主線程中發(fā)起的,那就會造成整個瀏覽器阻塞。 web worker 是運行在后臺的 JavaScript,不會影響頁面的性能。 什么是 Web Worker?當在 HTML 頁面中執(zhí)行腳本時,頁面的狀態(tài)是不可響應的,直到腳本已完成。 web worker 是運行在后臺的 JavaScript,獨立于其他腳本,不會影響頁面的性能。您可以繼續(xù)做任何愿意做的事情:點擊、選取內(nèi)容等等,而此時 web worker 在后臺運行。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 真實情況:我們根本無需增加思想負擔。了解什么work、新的api、和多線程消息機制等!我們解決它,只需要遵循以下2點一般就可以解決 1.AJAX 請求 變?yōu)楫惒剑哼@也是ajax默認方式,不然用ajax也失去了本質(zhì)意義,同步很少
2.接受的請求,返回一個html代碼段,里面包含了<script src="/scripts/script.js"></script> 這樣腳本文件引用! 才會出現(xiàn)這種警告!
備注:這樣的情況很多,比如你要請求一段html 用于局部刷新顯示到頁面,或者請求后臺模版,而這段html里 還有<script scr="xx.js"></script> 引用,就會出險上述警告 解決辦法:依據(jù)第二點 1.請將 <script src="/scripts/script.js"></script> 提前寫入前臺頁面,從發(fā)送過來的HTML 代碼段剝離出去,親測有效!國外網(wǎng)友也是這樣總結! 2.將引用的外部js腳本文件,寫到dom里面,以 <script type="text/javascript"> console.log('我是外部js內(nèi)容,現(xiàn)在通過script 標簽寫到到html里'); </script> 親測有效! 總之:如果請求HTML代碼段或者HTML模版,不要直接引入外部js的方式就可以,有很多技巧,大家自行發(fā)揮,還要2種方式可以解決;想好了給我留言 哈哈哈!
|
|
來自: 念念爸 > 《web開發(fā)問題解決》