2010-02-05 153 views
16

有没有在JavaScript中加载页面时停止iframe的方法?我需要这样做的原因是我有一个来自web服务器的背景iframe流式数据(通过Comet风格机制),我需要能够随意切断连接。停止使用javascript加载页面的iframe

任何想法欢迎。

+1

没有足够的信心把它作为答案,但你不能只是将iframe指向另一个url?就像'document.getElementById(“myiframe”)。src =“http://www.example.com/not-long-polling.html”;' – 2010-02-05 13:45:36

+1

这是我的第一个想法(+1),但我需要要保存的帧的内容。 – Konrad 2010-02-05 13:58:19

回答

26

对于Firefox/Safari /铬可以使用window.stop():

window.frames[0].stop() 

对于IE,你可以做同样的事情document.execCommand( '停止'):

window.frames[0].document.execCommand('Stop') 

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

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

这可能是更好的检查'typeof(window.frames [0] .stop)'而不是'navigator.appName'。未来的IE版本可能会支持。 – unclenorton 2011-07-10 13:34:50

+0

@unclenorton我真的不明白你想说什么。你可以写出条件? – 2012-02-14 01:17:27

+6

@MorSela,我想说,最好是检查一个功能,而不是浏览器。该条件看起来像'(typeof(window.frames [0] .stop ==='undefined')'。 – unclenorton 2012-03-01 06:22:49

13

整个代码应该是这样的,(unclenorton的一行丢失了胸罩cket)

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); 
} 
+1

为什么'setTimeout'使用? – Nishi 2016-04-22 13:16:09

1

只是,

document.getElementById("myiframe").src = ''; 
0

在IE浏览器不支持

<script> 
function stopit() { 
window.stop(); 

}; 
</script> 


<a href="#" onclick="stopit()" class="Stop" title="Stop"></a> 
+0

请看看接受的答案,我认为这与你发布的内容相当 – Marged 2015-06-15 21:48:48

0

非常简单:

1)获取iframe或的img你不”要加载:

let myIframe = document.getElementById('my-iframe') 

2)然后,只需更换src属性about.blank:

myIframe.src = 'about:blank' 

这就是全部。


如果你想在一个时间来加载iframe或图片的功能,当一些事件发生,然后只储存在dataset的SRC变量:

myIframe.dataset.srcBackup = myIframe.src 
// then replace by about blank 
myIframe.src = 'about:blank' 

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

myIframe.src = myIframe.dataset.srcBackup