什么是同步 XMLHttpRequest?
What is Synchronous XMLHttpRequest?
我正在测试,看看是否可以在文档准备好后使用 javascript 加载 .js,并从 chrome 收到此警告消息:
"Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience."
我的代码是这样的:
$(document).ready(function(){
var s=$('<script src="test.js"></script>');
$('body').append(s);
});
我的问题是:
1) 在这种情况下,什么被认为是 "Synchronous XMLHttpRequest"?我认为这与 'test.js' 的加载有关,但如果我将其更改为 var s=$('<img src="image.png"></img>');
,则不会显示警告消息。
2) 如果必须以这种方式加载 .js 文件,最佳做法是什么?
*********** 正在编辑 ***********
test.js的内容是
console.log(document.getElementsByTagName('h1'))
HTML中有一个h1
。
我认为您的问题与 async
有关
在 HTML5: async
, defer
中,您可以告诉浏览器何时 运行 您的 JavaScript 代码。有3种可能:
<script src="myscript.js"></script>
<script async src="myscript.js"></script>
<script defer src="myscript.js"></script>
- 如果没有
async
或 defer
,浏览器将立即 运行 您的脚本,
在呈现脚本标签下方的元素之前。
- 使用
async
(异步),浏览器会继续加载HTML
页面并在浏览器加载并执行脚本时呈现它
同时。
- 使用
defer
,浏览器将在页面完成时 运行 您的脚本
解析。 (无需下载所有图像文件。这
很好。)
我找到了以下答案:
Using jQuery to append a script tag to the document will cause it to
load the script with async:false
and trigger this warning.
var script = $("<script></script>");
script.attr("src", player.basepath + "whatever.js");
$(document.body).append(script);
未测试。仅供参考。
我正在测试,看看是否可以在文档准备好后使用 javascript 加载 .js,并从 chrome 收到此警告消息:
"Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience."
我的代码是这样的:
$(document).ready(function(){
var s=$('<script src="test.js"></script>');
$('body').append(s);
});
我的问题是:
1) 在这种情况下,什么被认为是 "Synchronous XMLHttpRequest"?我认为这与 'test.js' 的加载有关,但如果我将其更改为 var s=$('<img src="image.png"></img>');
,则不会显示警告消息。
2) 如果必须以这种方式加载 .js 文件,最佳做法是什么?
*********** 正在编辑 ***********
test.js的内容是
console.log(document.getElementsByTagName('h1'))
HTML中有一个h1
。
我认为您的问题与 async
在 HTML5: async
, defer
中,您可以告诉浏览器何时 运行 您的 JavaScript 代码。有3种可能:
<script src="myscript.js"></script>
<script async src="myscript.js"></script>
<script defer src="myscript.js"></script>
- 如果没有
async
或defer
,浏览器将立即 运行 您的脚本, 在呈现脚本标签下方的元素之前。 - 使用
async
(异步),浏览器会继续加载HTML 页面并在浏览器加载并执行脚本时呈现它 同时。 - 使用
defer
,浏览器将在页面完成时 运行 您的脚本 解析。 (无需下载所有图像文件。这 很好。)
我找到了以下答案:
Using jQuery to append a script tag to the document will cause it to load the script with
async:false
and trigger this warning.var script = $("<script></script>"); script.attr("src", player.basepath + "whatever.js"); $(document.body).append(script);
未测试。仅供参考。