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 超时的客户端。说明如下。

您的代码只是说:每 5 秒刷新一次 iframe。

您无法停止 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 执行此操作 - 请参阅iframe 访问父 DOM?

如果来自父元素 - 请参阅jQuery/JavaScript:访问 iframe 的内容

你走得越远,问题就越多,解决方案就越复杂。所以我建议放弃它。

于 2013-07-20T08:59:33.510 回答