javascript-前3个浏览器中的早期appendChild地狱

我正在尝试延迟加载javascript,但无法使其可靠运行.我的页面加载非常快,我想保持这种状态,因此我不会使用超时来延迟加载.除了document.readyState外,如何确保DOM真正准备好进行修改?

方法一:

  1. poll readyState

  2. createElement script

  3. src = url

  4. appendElement to head

结果:

IE8: always aborts

FF3: loads first time, aborts every
other

Chrome: loads first time, aborts every
other

方法II:(lazyload包含在head标签中)

  1. load with lazyload

结果:

IE8: always aborts

FF3: works

Chrome: loads first time, aborts every
other

解决方法:

如果您将< script>标签在< / body>上方标签,您可以使用DOM进行大多数操作,而不会引起任何错误,即< script>标签通常可以修改.

但是,如果您正在寻找更健壮的解决方案,则可以通过检查主要库如何检测DOM是否准备就绪来取得一些进展,这是入门(jQuery):http://github.com/jquery/jquery/blob/master/src/core.js#L393

上一篇:javascript-将一个部门的子元素与所有相关事件一起复制到另一部门


下一篇:通过appendChild添加的Javascript似乎无法运行