1

私はこれを行うスクリプトにつまずいています:

"complete" === document.readyState ? setTimeout(I, 1) : document.addEventListener ? (document.addEventListener("DOMContentLoaded", X, h), window.addEventListener("load", X, h)) : window.attachEvent ? window.attachEvent("onload", X) : console.log("No available event.")

ここで、X と I は関数で、h は false です。

それは何をするためのものか?

4

2 に答える 2

3

多分あなたはこのようにそれをよりよく理解するでしょう:

if("complete" === document.readyState){
    setTimeout(I, 1);
}else{
    if(document.addEventListener){
        document.addEventListener("DOMContentLoaded", X, h),
        window.addEventListener("load", X, h));
    }else{
        if(window.attachEvent){
            window.attachEvent("onload", X);
        }else{
            console.log("No available event.");
        }
    }
}

します:

  1. ドキュメントがロードされているかどうかを確認します
  2. そうである場合、関数Iは 1 ミリ秒後に呼び出されます
  3. そうでない場合は、ブラウザがサポートしているかどうかを確認しますaddEventListener
  4. サポートされている場合、DOM が読み込まれると、関数Xが呼び出されます (DOMContentLoadedまたはloadイベントを介して)
  5. そうでない場合は、ブラウザがサポートしているかどうかを確認しますattachEvent
  6. サポートされている場合、DOM がロードされると、関数 X が (loadイベントを通じて)呼び出されます。
  7. そうでない場合、ブラウザはサポートもサポートaddEventListenerもしていないと表示されますattachEvent

関数Xは DOM にアクセスまたは変更すると思われるため、上記のスクリプトは を呼び出す前に DOM が完全にロードされているかどうかを確認しますX

于 2012-08-02T18:53:06.763 に答える
0

これは、クロスブラウザー方式で DOM のロード状態を検出するコードの塊のようです。

ブラウザが DOMContentLoaded をサポートしていない場合、ウィンドウ ロード イベントの使用にフォールバックします。

これは、DOM を操作できるようになったら、つまりページがレンダリングされた後にコードを開始するために使用されます。

于 2012-08-02T18:44:42.603 に答える