私は非常に独特の状況があります。DOMの前でYUIのonDomReadyが一見準備ができていますか?
かなり複雑で(遅い)フレームワークで書かれたWebアプリケーションの問題をデバッグしています。
コードの一部として、YUIに次のスクリプトロードし、実行:init()
は、JS関数で
function() {
YU.Event.onDOMReady(function() { init(); });
}
を。
問題::時には(約1/2時間)、init()関数が呼び出されたときに、DOMがまだ読み込まれていないようです。より正確には、document.getElementById();
呼び出しはnull
値、およびときに私は、Internet Explorerのデバッガ(IE8)をアップロードし、getElementById()
コール、デバッガのHTMLタブ単に"Loading..."
は言う(アプリは互換性がありませんん行にブレークポイントを返しますFirebugを使用することはできません)
私はに何か考えていただきたいと思いますが、これはなぜ起こっているのでしょうか?(わずか50%の時間)、これを調べる方法を教えてください。
このことができます誰かがのappendChild(経由で動的にDOMに物事のカップルを追加関与アプリに変更を加えたときに、問題が開始された場合)
私は特にどのように探していますのでご注意ください私は私が使用している場合ことを発見し、早期onDOMReady()
コール、NOTあなたがDOM appendChild()
を使用している場合、代わりにYUIのバージョンを使用し、非ヌルまでのsetTimeoutとループでgetElementById()
)
getElementByIDでアクセスしようとしている要素は、ページやajaxを使って静的にロードされていますか? – Matt
@Matt - 静的です。 HTMLの一部。 – DVK
'document.getElementById()'は決して 'undefined'(例えばhttp://jsfiddle.net/AxrDL/)を返すべきではありません。あなたが 'null'を返すことを意味するならば、そう言います。この動作を再現することはほとんど不可能なので、追加情報が役立ちます:IEのどのバージョン?あなたは他のバージョンを試しましたか? DOMReadyイベントをウィンドウロードイベントに変更するとどうなりますか?長さ0のタイマーでDOMReadyを遅らせるとどうなりますか?ウインドウがロードされる前のある時間に近似するタイマーによってイベントを遅延させた後、DOMReadyの発射後に何が起こるか? – davin