在DOM似乎准备好之前,YUI中的onDomReady会发生火灾吗?

时间:2012-04-26 15:55:52

标签: javascript yui

我有一个非常特殊的情况。

我正在调试一个用相当复杂(缓慢)框架编写的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()”之类的解决方法。

2 个答案:

答案 0 :(得分:0)

如果您使用的是DOM appendChild(),请改用YUI版本。

我发现如果我直接在Dom对象上使用appendChild(),它在所有浏览器(IE7)中都不起作用。您使用的是DOM appendChild()还是YUI appendChild()

答案 1 :(得分:0)

  1. 问题是针对IE8的。它在IE10上消失了。

  2. 我通过添加一个小的等待循环来修复它。有趣的是,循环并不需要很长(几毫秒) - 我不知道为什么这解决了IE8上的问题,但确实如此。