阻止iframe使用javascript加载页面 是否有一个方法在加载页面时停止iFrAME?我需要这样做的原因是我有一个来自web服务器的后台iframe流数据(通过Comet样式的机制),我需要能够随意断开连接

阻止iframe使用javascript加载页面 是否有一个方法在加载页面时停止iFrAME?我需要这样做的原因是我有一个来自web服务器的后台iframe流数据(通过Comet样式的机制),我需要能够随意断开连接,javascript,dom,iframe,comet,Javascript,Dom,Iframe,Comet,欢迎任何想法。对于FireFox/Safari/Chrome,您可以使用window.stop(): 对于IE,您可以对document.execCommand('Stop')执行相同的操作: 对于跨浏览器解决方案,您可以使用: if (navigator.appName == 'Microsoft Internet Explorer') { window.frames[0].document.execCommand('Stop'); } else { window.frames[0].

欢迎任何想法。

对于FireFox/Safari/Chrome,您可以使用window.stop():

对于IE,您可以对document.execCommand('Stop')执行相同的操作:

对于跨浏览器解决方案,您可以使用:

if (navigator.appName == 'Microsoft Internet Explorer') {
  window.frames[0].document.execCommand('Stop');
} else {
  window.frames[0].stop();
}

整个代码应该是这样的(unclenorton的行缺少一个括号)

只是

document.getElementById("myiframe").src = '';
不支持IE


函数stopit(){
window.stop();
};
非常简单: 1) 获取您不想加载的iframe或img:

let myIframe = document.getElementById('my-iframe')
2) 然后您可以将src属性替换为about.blank:

myIframe.src = 'about:blank'
就这些


如果希望在某个事件发生时在功能中加载iframe或图像,则只需将src变量存储在:

现在,您可以在需要时轻松使用它:

myIframe.src = myIframe.dataset.srcBackup

如果您只有对元素的引用,则需要使用
.contentX
获取
文档
/
窗口
以运行接受的答案。
对于动态添加的iframe元素,还需要检查iframe是否实际具有文档

函数stopIframe(元素){
var doc=element.contentDocument;
//如果没有加载,iFrame就不会有文档
//检查以使JS不会抛出
如果(!doc)
返回;
//尝试使用现代浏览器
if(doc.defaultView.stop)
doc.defaultView.stop();
//IE的退路
其他的
doc.execCommand('Stop');
}

没有足够的信心将其作为一个答案,但您不能直接将iframe指向另一个url吗?类似于
document.getElementById(“myiframe”).src=”http://www.example.com/not-long-polling.html";
这是我的第一个想法(+1),但我需要保留框架的内容。检查
typeof(window.frames[0].stop)
可能比检查
navigator.appName
更好。未来的IE版本可能会支持这一点。@MorSela,我想说的是,最好检查功能,而不是浏览器。该条件将类似于
(typeof(window.frames[0].stop=='undefined')
。感谢您的回答。我同意unclenorton的观点:最好测试功能本身的存在性,而不是测试浏览器。Alex使用typeof()的示例非常有效。对于那些使用jQuery的人来说,我在测试
stop
函数时遇到了问题,原因是。为了解决这个问题,我使用了javascript dom选择器,如:
document.getElementById(“myId”).getElementsByTagName(“iframe”)[0]
。我不知道是否有一个简单的替代方案,但它确实起到了作用。请看一看公认的答案,我认为它与您发布的答案完全相同。为什么要使用
setTimeout
呢?这并不会停止大型和繁重的javascript执行,比如Unity WebGL Build。
<script>
function stopit() {
window.stop();

};
</script>


<a href="#" onclick="stopit()" class="Stop" title="Stop"></a>
let myIframe = document.getElementById('my-iframe')
myIframe.src = 'about:blank'
myIframe.dataset.srcBackup = myIframe.src
// then replace by about blank
myIframe.src = 'about:blank'
myIframe.src = myIframe.dataset.srcBackup