2

私のアプリケーションでは、ドキュメントをチェックするために1000 ミリreadyState秒ごとにメソッドを呼び出しています。以下は私が使用しているコードです:

var success=setInterval(""CheckState()"",1000);

function CheckState(){

if($get('businessDownl').document.readyState=="interactive" || 
      $get('businessDownl').document.readyState=="complete"){
           alert("Great");
           clearInterval(success);
  } 
}

このコードは IE ブラウザーでは問題なく動作しますが、Firefox および Chrome ブラウザーでは失敗します。私も使ってみ $get('businessDownl').readyStateましたが、未定義として印刷されています。readyState上記のシナリオで Firefox と Chromeを使用する方法を誰か教えてもらえますか?

4

2 に答える 2

2

ドキュメントの準備が整うまで待ちたい場合は、チェックを続ける必要はありません。イベントをリッスンできます。

var whenReady = function(callback) {
  if (document.readyState === 'complete') callback(); // check not already loaded prior to this function being called
  else if (document.addEventListener) document.addEventListener('DOMContentLoaded', callback); // for standards compliant browsers (including IE 9+)
  else if (document.attachEvent) document.attachEvent('onreadystatechange', callback); // for IE 8
};

whenReady(alert('loaded'));

この手法の唯一の欠点は、IE 8 以降しかサポートしていないことです。JQuery などのライブラリは、より優れたレガシー ブラウザーのサポートとよりクリーンな構文を提供します。

$(function() {
  // anything here will execute once the dom is ready
});
于 2013-05-22T10:35:36.090 に答える