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