【问题标题】:iframe loading time limit use javascriptiframe 加载时间限制使用 javascript
【发布时间】:2013-07-20 05:44:07
【问题描述】:

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

【问题讨论】:

  • 你为什么要set iframe src 而不是在你想停止它时删除它?

标签: javascript iframe settimeout


【解决方案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

【讨论】:

  • 如果我需要停止许多具有相同 id 的 iframe。每个 iframe 我需要停止 1000 如何设置它?
  • 改进版 jsfiddle.net/qvhu6wh6/3 - 如果 iframe 中的页面已成功加载,则取消超时。
【解决方案2】:

我建议重新考虑这个想法。 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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 2011-01-13
    相关资源
    最近更新 更多