gpt4 book ai didi

javascript - fireContentLoadedEvent 在 ie 中被过早调用

转载 作者:行者123 更新时间:2023-11-30 06:06:55 25 4
gpt4 key购买 nike

我遇到了一个在 ie8 下才刚刚开始出现的问题。我的代码已经运行了一段时间,并且在 Firefox 中仍然运行良好,但由于某种原因,原型(prototype)刚刚停止为 dom:loaded 调用我的事件监听器。 .

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

经过一些调试(我讨厌 ie 的调试器!!!)我得出的结论是原型(prototype)的 fireContentLoadedEvent (ln 4102) 在加载 dom 之前就被调用了(几乎在 document.write("<script...") 之后)。

fireContentLoadedEvent!document.addEventListener 时从处理程序调用即(参见 prototype.js 第 4125 行)

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

了解此机制的人是否知道为什么它会过早触发?

最佳答案

我想通了…………!!

在 IE 中,如果您在页面加载期间更改任何元素的 innerHTML,所有“延迟”脚本都会过早加载...

我的一个内联 javascript 程序在页面加载期间更改元素的 innerHTML 并延迟此脚本为我解决了这个问题。

所以我需要记住的是:

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

关于javascript - fireContentLoadedEvent 在 ie 中被过早调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3827066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com