0

5000 ミリ秒後に iframe ページの読み込みを停止する必要があります。これらを使用していますが、5000 ミリ秒ごとに iframe が更新され、問題が発生します。修正してください。ありがとう

<iframe id="iframe1" src="" width="920" height="900" border="2"></iframe>
<script type="text/javascript"> 
function setIframeSrc() {
  var s = "http://lx5.in/CGIT-Results-p2-2013.php";
  var iframe1 = document.getElementById('iframe1');
  if ( -1 == navigator.userAgent.indexOf("MSIE") ) {
    iframe1.src = s;
setTimeout(setIframeSrc, 5000);
  }
  else {
    iframe1.location = s;
setTimeout(setIframeSrc, 5000);
  }
}
setTimeout(setIframeSrc, 5000);
</script>
4

2 に答える 2

1

iframe の読み込みを停止するには、この回答に基づいて次のコードを使用できます。

function setIframeSrc() {
  var s = "http://lx5.in/CGIT-Results-p2-2013.php";
  var iframe1 = document.getElementById('iframe1');
  iframe1.src = s;
  setTimeout(function(){
      if (window.stop) {
          window.stop();
      } else {
          document.execCommand('Stop'); // MSIE
      }
  }, 5000);
}
setTimeout(setIframeSrc, 5000);

jsfiddle / jsfiddle/show

于 2013-07-20T08:59:37.527 に答える
0

考えを改めることをお勧めします。IMOタイムアウト情報を表示するのはサーバーであり、JavaScriptタイムアウトを使用するクライアントではありません。以下説明。

コードは次のように言っています: iframe を 5 秒ごとに更新します。

iframe リクエストの実行を停止することはできません。iframe の src の場所を変更したり、DOM ツリーから削除したりできます。しかし、開始されたリクエストはサーバーに到達すると止められません。

そう:

<iframe id="iframe1" src="{url to query}" ...>

そしてスクリプトで:

function displayTimeout() {
 (...)
 var p = iframe1.parentNode;
 p.removeChild(iframe1);
 var div = document.createElement("div");
 var text = document.createTextNode("Timeout loading iframe");
 div.appendChild(text);
 p.appendChild(div);
}
setTimeout(displayTimeout,5000);

しかし、このソリューションには重大な欠点があります。iframe が時間内にロードされたときにタイムアウトを表示しないようにするには、タイムアウトをキャンセルする必要があります。しかし、それを行う方法は?

iframe から実行する場合は、親 DOM にアクセスするiframe を参照してください。

親要素からの場合 - jQuery/JavaScript: iframe のコンテンツへのアクセスを参照してください

先に進むほど、問題が増え、解決策が複雑になります。ですから、私はそれを放棄することをお勧めします。

于 2013-07-20T08:59:33.510 に答える