iframe加载时间限制使用javascript

时间:2013-07-20 05:44:08

标签: javascript iframe settimeout

我需要在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>

2 个答案:

答案 0 :(得分:1)

要停止iframe加载,您可以使用基于this answer的以下代码:

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

答案 1 :(得分: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 accessing parent DOM?

如果来自父元素 - 请参阅jQuery/JavaScript: accessing contents of an iframe

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