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 にいくつかのものを追加することが含まれていました。

「非 null になるまで setTimeout を使用してループでonDOMReady()呼び出す」などの回避策ではなく、時期尚早の呼び出しに対処する方法を具体的に探していることに注意してください)getElementById()

4

2 に答える 2

0

DOMappendChild()を使用している場合は、代わりに YUI バージョンを使用してください。

appendChild()Dom オブジェクトを直接使用すると、すべてのブラウザー (IE7) で機能しないことがわかりました。DOMappendChild()または YUIを使用していますappendChild()か?

于 2012-04-30T16:15:18.703 に答える