12

別のスクリプトを介して動的に挿入されているスクリプトがあります。そのスクリプトのコードは$(window).load()、ページ上の画像をすべて読み込む必要があるため、イベント内にラップされています。一部のブラウザーでは正常に動作しますが、コードが実行されるまでにページの読み込みが既に完了しているため、起動しないように見えるブラウザーもあります。

jQuery または JavaScript を使用して、ページの読み込みが既に完了しているかどうかを確認する方法はありますか? (画像含む)

この状況では、元のドキュメントのイベントにアクセスできませんonload(ロードされたスクリプトを介して変更することは別として、同じ問題が発生するようです)。

どんなアイデア/解決策/アドバイスも大歓迎です!

4

5 に答える 5

7

タイムアウトを介して呼び出されるハンドラーを設定して、画像をチェックしてプロパティが利用可能かどうかを確認してみてください。イベント ハンドラーでタイマーをクリアしてload、load イベントが最初に発生した場合にタイマーが起動しないようにします。プロパティが利用できない場合、load イベントはまだ発生しておらず、ハンドラーが最終的に呼び出されることがわかります。そうであれば、ハンドラーが設定される前に load イベントが発生したことがわかり、そのまま続行できます。

疑似コード

 var timer = null;
 $(function() {
    $(window).load( function() {
        if (timer) {
           clearTimeout(timer);
           timer = null;
        }
        process();
    });
    timer = setTimeout( function() {
        if (checkAvailable())
           process();
        }
    }, 10*1000 ); // waits 10 seconds before checking
 });

 function checkAvailable()
 {
     var available = true;
     $('img').each( function() {
         try {
             if (this.height == 0) {
                available = false;
                return false;
             }
         }
         catch (e) {
             available = false;
             return false;
         }
      });
      return available;
  }

  function process() {
      ... do the real work here
  }
于 2009-05-22T03:05:37.393 に答える
5

役に立つかもしれないプラグインを書きました: http://plugins.jquery.com/project/window-loaded

于 2009-10-16T15:57:57.700 に答える
2

あなたたちはこれを読むべきです:

http://web.enavu.com/daily-tip/daily-tip-difference-between-document-ready-and-window-load-in-jquery/

于 2010-07-29T14:41:35.213 に答える