2012-01-22 17 views
9

Así que tengo iframe y estoy cargando archivos a través de él, así que mi pregunta es ¿cómo puedo detenerlo en el medio de la carga? He intentado cambiar src con la función de jquery attr() pero no serví de nada, estoy pensando en eliminar todo el iframe con js, pero me crearía otros problemas y ni siquiera estoy seguro de si funcionaría. Entonces, ¿hay otras formas de hacerlo?Detener iframe desde la carga

Mi siguiente pregunta sería, ¿es posible ocultar los indicadores de carga para que no se confunda a los usuarios que la página se está cargando o algo así.

Respuestas como las que debes usar flash u otras cosas no serán aceptadas Ya hice todo con iframe, solo tengo que hacer esas 2 cosas.

Aquí está mi código iframe:

<iframe onload="file_uploaded()" class="iframe" src="user/upload_image/" name="iframeTarget" ></iframe> 
+1

¿Ha intentado cambiar el src usando' docu ment.location'? –

+0

@michielvoo puede ser más específico, he intentado hacerlo así 'document.getElementById ('myId'). Location =" # "' ofc di mi iframe id 'myId' pero no funcionó – Linas

+1

Debe ser 'document.getElementById ('myId'). Document.location'. Y no creo que '" # "' funcione. Tendría que navegar a otra ubicación para cancelar la operación dentro del iframe, pero '#' es simplemente un ancla no nombrada dentro de la página actual. Pero, en general, sería mejor usar la respuesta dada a continuación por Rick Kuipers. –

Respuesta

16

Creo que el siguiente responde a su pregunta: https://stackoverflow.com/a/2207589/1157493

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 puede usar:

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

Si desea el iframe para ir a una página diferente se podría tratar de redirigirlo a "about: blank "

+0

Gracias funcionó , ahora, ¿cómo puedo eliminar ese indicador de carga molesto para que el usuario no vea que la página se está cargando? – Linas

+0

¿Puede explicar de qué indicador de carga está hablando? Si estamos hablando de cursores, usar CSS 'cursor: default;' resolvería esto. –

+0

no, estoy hablando de todo lo que muestra que la página se está cargando, por ejemplo, en firefox en la esquina inferior derecha hay un cuadro que muestra todos los elementos que se están cargando, ya sabes a qué me refiero ... quiero que sea tan parecería que estoy usando ajax, pero en realidad no soy – Linas

6

Esto funciona para mí (IE, Chrome, FF, Opera):

$iframe.attr('src','about:blank'); 
+2

esto es realmente una buena solución cuando no tienes nada que ver con la página y su URL, y el marco (iframe) está en otro dominio. ** la versión de js pura: ** 'document.getElementsByTagName ('iframe') [0] .src =" sobre: ​​en blanco ";' recuerda que no puede usar 'frames [0]' porque le da el 'window' dentro del iframe, no el elemento iframe en su página con el atributo' src'. – Unicornist

Cuestiones relacionadas