1

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

我正在调试一个用相当复杂(而且速度很慢)的框架编写的 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()调用,而不是像“getElementById()在循环中调用 setTimeout 直到非空的解决方法”

4

2 回答 2

0

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

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

于 2012-04-30T16:15:18.703 回答
0
  1. 该问题是特定于 IE8 的。它在 IE10 上消失了。

  2. I fixed it by adding a small wait loop. Interestingly, the loop didn't need to be long (couple milliseconds) - I'm at a loss as to WHY this fixed the issue on IE8, but it did.

于 2014-12-29T19:11:12.947 回答