2010-02-05 17 views
16

¿Hay alguna forma en javascript de detener un iframe en medio de la carga de una página? La razón por la que necesito hacer esto es porque tengo un fondo iframe que transmite datos desde un servidor web (a través de un mecanismo de estilo Comet) y necesito poder cortar la conexión a voluntad.Detener un iframe para que no se cargue una página mediante javascript

Cualquier idea bienvenida.

+1

No estoy lo suficientemente seguro como para ponerlo como respuesta, pero ¿no podría simplemente dirigir el iframe a otra url? Algo así como 'document.getElementById (" myiframe "). Src =" http://www.example.com/not-long-polling.html ";' –

+1

Esa fue mi primera idea (+1), pero necesito el contenido del cuadro a preservar. – Konrad

Respuesta

26

para Firefox/Safari/Chrome puede utilizar window.stop():

window.frames[0].stop() 

Para IE, puede hacer lo mismo con Document.ExecCommand ('Stop'):

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

Para una solución multi-navegador que puede usar:

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

Probablemente sea mejor buscar 'typeof (window.frames [0] .stop)' en lugar de 'navigator.appName'. La futura versión de IE puede ser compatible. – unclenorton

+0

@unclenorton realmente no entiendo lo que intentas decir. usted puede escribir la condición? –

+6

@MorSela, intento decir que es mejor buscar una característica en lugar de un navegador. La condición se verá como '(typeof (window.frames [0] .stop === 'undefined')'. – unclenorton

13

todo el código debe ser así, (línea de unclenorton faltaba un sujetador 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

¿Por qué? 'setTimeout' usado? – Nishi

1

Simplemente,

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

no admite en IE

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

}; 
</script> 


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

Por favor, eche un vistazo a la respuesta aceptada, creo que es bastante igual a lo que publicó – Marged

0

Muy fácil:

1) Obtener el iframe o IMG usted don' Quiero cargar:

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

2) A continuación, puede simplemente reemplazar atributo src para about.blank:

myIframe.src = 'about:blank' 

eso es todo.


Si desea cargar el iframe o imagen a la vez en función cuando ocurre algún evento a continuación, sólo almacenar la variable src en dataset:

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

Ahora se puede usar cuando sea necesario con facilidad:

myIframe.src = myIframe.dataset.srcBackup 
Cuestiones relacionadas