¿Cómo uso javascript o jQuery para cerrar un iframe dentro del mismo iframe? Lo intenté <a href="javascript:self.close()">
pero no funcionó.Cómo cerrar un iframe dentro del propio iframe
Respuesta
"Cerrar" el iFrame actual no es posible, pero puede decirle al padre que manipule el dom y lo haga invisible.
En IFrame:
parent.closeIFrame();
En matriz:
function closeIFrame(){
$('#youriframeid').remove();
}
@citizen, si no tengo control para el dominio principal. ¿Se puede manejar esto en el propio iframe? Al igual que en iframe, haciendo referencia al propio iframe mediante parent.getElementByID ("iFrameID"). Remove(); – Stan
oh es de dominio cruzado? no podrás manipular la dom sin entrar en un nuevo mundo de dolor. –
objeto principal es bastante eficiente ... Creo que así es como un iframe relaciona su página parental? – efirat
function closeWin() // Tested Code
{
var someIframe = window.parent.document.getElementById('iframe_callback');
someIframe.parentNode.removeChild(window.parent.document.getElementById('iframe_callback'));
}
<input class = question name="Close" type ="button" value = "Close" onClick = "closeWin()" tabindex="10" />
Esto no funciona! Implementado en unos segundos. ¡Lo recomiendo! – Laci
Esto funciona, pero no dominio cruzado :( –
Años tarde, lo sé, pero solo quiero señalar que innecesariamente llamas a getElementById dos veces. La segunda línea de 'closeWin()' debería ser 'someframe.parentNode. removeChild (someIframe); '. – Doin
Utilice esta opción para eliminar iframe del padre dentro de marco flotante en sí
frameElement.parentNode.removeChild(frameElement)
Se trabaja con un mismo origen solamente (no permitido con cruz ori ginebra)
su tipo de hacky pero funciona bien-ish
function close_frame(){
if(!window.should_close){
window.should_close=1;
}else if(window.should_close==1){
location.reload();
//or iframe hide or whatever
}
}
<iframe src="iframe_index.php" onload="close_frame()"></iframe>
continuación, dentro del marco
$('#close_modal_main').click(function(){
window.location = 'iframe_index.php?close=1';
});
y si usted desea conseguir la suposición a través de un
if(isset($_GET['close'])){
die;
}
en la parte superior de la página de tu marco para que la recarga no se note
así que básicamente la primera vez que se carga de marco es imposible ocultarse pero la próxima vez que se carga el itll llamar a la función onload y el padre tendrá una la ventana var haciendo que el marco para cerrar
Ninguno de esta solución trabajó para ya que estoy en un escenario de dominio cruzado creando un bookmarklet como Pin It de Pinterest.
He encontrado una plantilla bookmarklet en GitHub https://gist.github.com/kn0ll/1020251 que resolvió el problema de cerrar el Iframe enviando el comando desde allí.
Ya que no puedo acceder a cualquier elemento de la ventana padre dentro del marco flotante, esta comunicación sólo se puede realizar la publicación de eventos entre las dos ventanas utilizando window.postMessage
Todos estos pasos son en el enlace de GitHub:
1- Debes insertar un archivo JS en la página principal.
2- En este archivo se inyecta en la matriz, añadir un evento listner ventana
window.addEventListener('message', function(e) {
var someIframe = window.parent.document.getElementById('iframeid');
someIframe.parentNode.removeChild(window.parent.document.getElementById('iframeid'));
});
Este oyente se encargará del cierre y cualquier otro evento que desea
3- Dentro de la página de marco flotante que envíe la orden de cierre a través de postMessage:
$(this).trigger('post-message', [{
event: 'unload-bookmarklet'
}]);
Siga la plantilla en https://gist.github.com/kn0ll/1020251 y usted estará bien!
creo que sirve,
La segunda línea de su función de oyente par (paso 2) innecesariamente llama a getElementById por segunda vez con el mismo argumento que antes. Esta línea debería ser simplemente:' someIframe.parentNode.removeChild (someIframe); ' – Doin
Además, creo que hay un error en su código. Si el detector de eventos se inyecta y se ejecuta en el contexto de la ventana principal, entonces no debe escribir' window.parent.document.getElementById (...) 'pero simplemente' document.getElementById (...) ', porque ya está * en * la ventana principal. – Doin
- 1. Cómo cerrar iframe desde dentro de iframe?
- 2. cómo cerrar colorbox dentro de iframe?
- 3. Cerrar iframe dominios
- 4. Obtener iframe src param desde dentro del mismo iframe
- 5. ¿Es posible cerrar prettyphoto modal dentro de iframe?
- 6. ¿Cómo cambiar la altura del iframe en función del contenido dinámico dentro del iframe?
- 7. Jquery dentro de Iframe
- 8. Llamar a una función dentro de un iframe desde fuera del iframe
- 9. URL rotativas dentro de un Iframe
- 10. jQuery cómo cerrar el diálogo desde el iframe dentro del cuadro de diálogo?
- 11. Obtener elemento dentro de un iFrame
- 12. OAuth no funciona dentro de un iframe
- 13. Cerrar ColorBox iFrame después de enviar
- 14. Fancybox.close() en un iframe
- 15. Fancybox tipo iframe valor devuelto al cerrar
- 16. Deshabilitar cookies dentro de un marco/Iframe
- 17. Iframe hereda del padre
- 18. Cómo encontrar un div dentro de un iframe
- 19. Accediendo a un elemento fuera del iframe
- 20. ¿Carga diferida del iframe?
- 21. Altura dinámica del iframe
- 22. acceso al nombre del iframe desde iframe interior
- 23. Cómo obtener scrollTop de un iframe
- 24. jQuery Controlador arrastrable dentro de IFrame
- 25. ¿Cómo usar jquery desde el padre dentro de un iframe?
- 26. IE10 XML no se formatea dentro del iframe
- 27. ¿Cómo centrar un iframe horizontalmente?
- 28. Impresión solo de un iFrame
- 29. Actualizar un iframe
- 30. muestra solo un div dentro de un iframe (javascript, JQuery ...)
Si no quiere depender de los identificadores de tratar mi respuesta a http://stackoverflow.com/questions/6086986/how-do-i-remove-an-iframe-from -with-itself-that-has-been-been-been-dynamically-created – Rhys