使用javascript停止加载页面的iframe

Kon*_*rad 20 javascript iframe dom comet

有没有办法在javascript中加载页面中间停止iframe?我需要做的原因是我从网络服务器后台的iframe流数据(通过彗星风格机制),我需要能够切断随意连接.

欢迎任何想法.

Chr*_*tal 31

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

window.frames[0].stop()
Run Code Online (Sandbox Code Playgroud)

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

window.frames[0].document.execCommand('Stop')
Run Code Online (Sandbox Code Playgroud)

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

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

  • 检查`typeof(window.frames [0] .stop)`而不是`navigator.appName`可能更好.未来的IE版本可能支持这一点. (13认同)
  • @MorSela,我想说最好检查一个功能而不是浏览器.条件看起来像`(typeof(window.frames [0] .stop ==='undefined')`. (6认同)
  • 对于那些使用jQuery的人来说,我在测试`stop`函数时遇到了问题,因为[jQuery方法具有相同名称](http://api.jquery.com/stop/).为了解决这个问题,我使用了这样的javascript dom选择器:`document.getElementById("myId").getElementsByTagName('iframe')[0]`.我不知道这是否有一个简单的替代方案,但它确实起到了作用. (2认同)

小智 13

整个代码应该是这样的,(unclenorton的行没有括号)

if (typeof (window.frames[0].stop) === 'undefined'){
    //Internet Explorer code
    setTimeout(function() {window.frames[0].document.execCommand('Stop');},1000);
}else{
    //Other browsers
    setTimeout(function() {window.frames[0].stop();},1000);
}
Run Code Online (Sandbox Code Playgroud)