2016-07-14 6 views
-1

ドキュメントが既にロードされている場合にのみ実行されるコードを実行します(ロード後にRIGHTを実行するものではありません)。 JQueryではないものを探しています。ウィンドウがロードされた場合にのみアクションを実行します

問題の背景には、ページが完全に読み込まれる前に実行される関数があります。ただし、この関数はイベントをディスパッチする別の関数を呼び出します。私は、ウィンドウが既にロードされている場合にのみ、そのイベントをディスパッチする必要があります。そうでない場合は、配列に格納して、ページがロードされたらすぐにそれを送出してください。

+3

https://stackoverflow.com/questions/799981/document-ready-equivalent-without-jquery – Jack

+0

ていますあなたはイベントを検出しようとしているか、 'if'文に入れるコードをいくつか持っていますか? – 4castle

+0

基本的に 'if'文を入れます。私はDOMContentLoadedとonloadを試しましたが、私がやっていることでうまく動作しません。 DOMがロードされているかどうかを確認したいのですが、読み込んだ直後に何かを実行しないようにしてください...もし意味があれば –

答えて

1

onloadイベントのキャプチャに問題はありませんが、まだ起こっているかどうかを知るだけです。

onloadイベント内に、trueというフラグを設定してから、ifステートメントでそのフラグを参照できます。

再利用可能なソリューションについては

、あなたがコールバックを受け入れる機能でこの動作をカプセル化することができます:

var whenLoaded = (function() { 
    var isLoaded = false, 
     callbacks = []; 
    window.onload = function() { 
     isLoaded = true; 
     for (var i = 0; i < callbacks.length; i++) 
      callbacks[i](); 
    }; 
    return function whenLoaded(callback) { 
     if (isLoaded) { 
      callback(); 
     } else { 
      callbacks.push(callback); 
     } 
    }; 
})(); 

... 

whenLoaded(function() { 
    // eat a cookie 
}); 
+0

質問の背後にある前提: ページが完全にロードされる前に実行される関数があります。ただし、この関数はイベントをディスパッチする別の関数を呼び出します。私は、ウィンドウが既にロードされている場合にのみ、そのイベントをディスパッチする必要があります。そうでない場合は、配列に格納し、ページがロードされた後にディスパッチしてください。 –

+0

@HassaanHafeez私はIIFEで多目的になるように答えを更新しましたが、基本的にはその文を 'onload'ブロックに入れるか、そうでなければ後で呼び出す配列に入れておくだけです。 – 4castle

関連する問題