我记得在某处读过如果使用appendChild将一个脚本标记添加到DOM,它就不会阻塞,并且表现得好像它有async属性.今天我正在阅读
this article,它有以下代码片段:
var link = document.createElement('link'); link.rel = 'import'; link.href = 'file.html'; //link.setAttribute('async',''); // make it async!
解决方法
根据定义
in the specification,每个未标记为异步的< link rel =“import>标记都会阻止解析器.
如果您添加< link>使用appendChild(),它不会阻止当前的脚本执行,但实际上它将阻止解析,直到加载导入的文档.
如果之后您添加了另一个标记 – 使用appendChild() – 由导入的文档引用,您仍需要指定async属性.
document.head.appendChild( link ) //link should be async if it uses the element below: document.body.appendChild( element )