Hello! 欢迎来到小浪资源网!


为什么document.write无法重载defer脚本?


为什么document.write无法重载defer脚本?

为什么使用 document.write 无法重载 defer 脚本

在给定的代码段中,在页面加载后,document.write 无法重载 defer 脚本 2.JS 和 3.js。

根源在于异步加载的 defer 脚本和 document.write 之间的交互。defer 脚本会在文档的 readyState 属性变为 interactive 后执行,但此时文档流已关闭。使用 write 进行写入将默认执行 document.open() 重新打开文档流进行写入,从而覆盖页面。

此外,执行 write 后没有调用 document.close() 关闭文档流,导致浏览器一直处于解析状态,即 DOMContentLoaded 事件触发之前。因此,无法对 defer 脚本进行重新加载。

而使用 appendChild 方法创建新脚本并将其附加到文档可以正常工作,因为此时文档流是打开的,并且新的脚本会在其 onload 事件触发时执行。

相关阅读