0

我正在使用 LabJS,并且在我的一个 js 文件中有一个 document.body.appendChild()。它似乎工作正常,但我想知道它是否会遇到与 document.write 相同的潜在异步问题,或者它的行为是否不同。

4

1 回答 1

0

在做之前document.body.appendChild(),你需要知道 DOM 已经完成解析,因为在解析完成之前尝试以这种方式修改 DOM 可能会导致错误(在某些版本的 IE 中实际上可能导致浏览器段错误)。

因此,如果您使用 LabJS 动态加载脚本并且在文档解析之前执行此操作,那么您可能会在文档完成解析之前创建脚本加载和运行问题。

防止脚本过早运行的常用方法是要么在</body>标记之前甚至不尝试加载它,要么使用某种 DOM 就绪检测逻辑,以便在 DOM 就绪时通知你的脚本并仅运行其逻辑在安全的情况下这样做。我不详细了解 LabJS,不知道它是否有自己的 DOM 就绪检测逻辑(我第一次看时没有看到这样的功能)。

如果您使用任何其他框架(jQuery、YUI 等),它可能具有这样的逻辑。如果没有,这里有一个普通的 javascriptdocReady()函数:pure JavaScript 等价于 jQuery 的 $.ready() 如何在页面/dom 准备好时调用一个函数,您可以使用它来确保您的 DOM 修改代码不会跑得太早。

于 2014-06-17T23:52:11.880 回答