javascript - 在 IE 中,fireContentLoadedEvent被提前调用

  显示原文与译文双语对照的内容
0 0

我有一个问题,只有在ie8才开始出现。 我的代码已经工作了一段时间,仍然在 Firefox 没问题,但因为某些原因原型只为 dom:loaded 停止叫我的事件监听器。

我把它们通过 document.observe("dom:loaded", callback);

在一些调试( 我讨厌debugger的调试器) 之后,我已经得出了在dom加载( 几乎在 document.write("<script...") 之后) 之前,Prototype ( 4102 )的fireContentLoadedEvent 被调用了。

document.addEventListener IE ( 见 prototype.js 行 4125 ) 时,将从处理程序调用 fireContentLoadedEvent!


. . .
 if (document.addEventListener) {
. . .
 } else {
 document.write("<script id=__onDOMContentLoaded defer src=//:></script>");
 $("__onDOMContentLoaded").onreadystatechange = function() {
 if (this.readyState =="complete") {
 this.onreadystatechange = null;
 fireContentLoadedEvent();
 }
 };
 }
. . .

了解这里机制的任何人是否有任何关于它可能过早触发的想法的想法?

时间: 原作者:

0 0

我想出来了。。

在 IE 中,如果在页面加载期间更改任何元素的innerHTML,则会过早加载所有"延迟"脚本。

我的inline javascript过程之一是在页面加载期间更改元素的innerHTML,并延迟这个脚本解决我的问题。

所以我需要记住的是:

在页面加载之后永远不要更改 innerHTML

原作者:
...