我有一个非常特殊的情况。
我正在调试一个用相当复杂(缓慢)框架编写的Web应用程序中的问题。
作为代码的一部分,它在YUI中加载并运行以下脚本:
function() {
YU.Event.onDOMReady(function() { init(); });
}
其中init()
是JS函数。
问题:有时(大约1/2时间),当调用init()函数时,似乎还没有加载DOM。更准确地说,document.getElementById();
调用返回null
值,当我加载Internet Explorer调试器(IE8),以及执行getElementById()
调用的行上的断点时,调试器的HTML选项卡仅仅说"Loading..."
(该应用与FireFox不兼容,因此我无法使用Firebug)
我很感激为什么会发生这种情况(只有50%的时间)以及如何进行调查。
如果这有帮助,当有人对应用程序进行更改时会出现问题,其中包括通过appendChild()动态地向DOM添加一些内容
请注意,我正在专门研究如何解决过早的onDOMReady()
调用,而不是像setTimeout在非循环的循环中调用“getElementById()
”之类的解决方法。
答案 0 :(得分:0)
如果您使用的是DOM appendChild()
,请改用YUI版本。
我发现如果我直接在Dom对象上使用appendChild()
,它在所有浏览器(IE7)中都不起作用。您使用的是DOM appendChild()
还是YUI appendChild()
?
答案 1 :(得分:0)
问题是针对IE8的。它在IE10上消失了。
我通过添加一个小的等待循环来修复它。有趣的是,循环并不需要很长(几毫秒) - 我不知道为什么这解决了IE8上的问题,但确实如此。