我正在使用LabJS并且在我的一个js文件中有一个document.body.appendChild()。它看起来工作正常,但我想知道它是否会遇到与document.write相同的潜在异步问题,或者它是否表现不同。
答案 0 :(得分:0)
在执行document.body.appendChild()
之前,您需要知道DOM已经完成解析,因为在完成解析之前尝试以这种方式修改DOM会导致错误(实际上,您可能会导致某些版本的浏览器出现段错误IE)。
因此,如果您使用LabJS动态加载脚本,并且在解析文档之前就这样做了,那么您可以在文档完成解析之前创建加载和运行脚本的问题。
防止脚本过早运行的常用方法是,甚至不要尝试将其加载到</body>
标记之前,或者使用某种DOM就绪检测逻辑,以便在脚本获得通知时通知DOM已准备就绪,只有在安全的情况下才能运行逻辑。我不太了解LabJS,知道它是否有自己的DOM就绪检测逻辑(我第一次看不到这样的能力)。
如果你正在使用任何其他框架(jQuery,YUI等...),它可能有这样的逻辑。如果没有,这里有一个简单的javascript docReady()
函数:pure JavaScript equivalent to jQuery's $.ready() how to call a function when the page/dom is ready for it,您可以使用它来确保您的DOM修改代码不会过早运行。