我需要在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>
答案 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);
答案 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
越走越远,问题就越多,解决方案就越复杂。所以我建议放弃它。