我正在测试,看看我是否可以在文档准备好后使用javascript加载.js,并从chrome获得此警告消息:
"主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用。"
我的代码如下:
$(document).ready(function(){
var s=$('<script src="test.js"></script>');
$('body').append(s);
});
我的问题是:
1)在这种情况下,什么被认为是&#34;同步XMLHttpRequest&#34;?我认为它与加载&#39; test.js&#39;有关,但如果我将其更改为var s=$('<img src="image.png"></img>');
,警告信息就不会显示。
2)如果必须以这种方式加载.js文件,那么最佳做法是什么?
***********编辑***********
test.js的内容是
console.log(document.getElementsByTagName('h1'))
HTML中有h1
。
答案 0 :(得分:1)
我认为您的问题与async
在HTML5中:async
,defer
,您可以告诉浏览器何时运行您的JavaScript代码。有三种可能性:
<script src="myscript.js"></script>
<script async src="myscript.js"></script>
<script defer src="myscript.js"></script>
async
或defer
,浏览器会立即运行您的脚本,
在渲染脚本标记下面的元素之前。async
(异步),浏览器将继续加载HTML
页面并在浏览器加载并执行脚本时呈现它
同时。defer
,浏览器将在页面完成后运行您的脚本
解析。 (不必完成下载所有图像文件。这个
很好。)我在下面找到答案:synchronous-xmlhttprequest-on-the-main-thread-is-deprecated
使用jQuery将脚本标记附加到文档将导致它 使用
async:false
加载脚本并触发此警告。var script = $("<script></script>"); script.attr("src", player.basepath + "whatever.js"); $(document.body).append(script);
未经测试。仅供参考。