He buscado durante un tiempo y no puedo encontrar una respuesta que se ajuste a mis necesidades. Tengo una página que muestra una ventana (window.open), registra al usuario (crea una cookie, establece una sesión) y luego redirige a otra página. Mientras que el modal se redirecciona, me gustaría actualizar la página principal, por lo que todo lo bueno que acabo de hacer será reconocido por el padre. He intentado window.opener y cosas así. ¿Puede alguien ayudarme un poco? GraciasActualice la ventana principal desde la ventana secundaria en javascript
Respuesta
window.opener
en la ventana emergente se referirá al objeto window
de la ventana de apertura, por lo que, por supuesto, debe poder llamar al window.opener.location.reload();
. Siempre que no se encuentre en conflicto con el Same Origin Policy, la ventana emergente puede invocar scripts y manipular propiedades en el objeto de la ventana principal al igual que el código en el padre.
Aquí hay un live example que demuestra que el hijo vuelve a llamar a una función en el elemento primario y también manipula el elemento primario directamente. El código completo para esto se cita a continuación.
Pero ese ejemplo no hizo exactamente lo que ha dicho, así que he done this one as well, que tiene el niño actualizar la página de los padres a través de window.opener.location.reload()
.
código de Padres del primer ejemplo vivo:
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Parent Window</title>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
article, aside, figure, footer, header, hgroup,
menu, nav, section { display: block; }
</style>
</head>
<body>
<input type='button' id='btnOpen' value='Open Window'>
<div id='display'></div>
</body>
<script type='text/javascript'>
(function() {
var btnOpen = document.getElementById('btnOpen');
btnOpen.onclick = btnOpenClick;
function btnOpenClick() {
window.open('http://jsbin.com/ehupo4/2');
}
// Make the callback function available on our
// `window` object. I'm doing this explicitly
// here because I prefer to export any globals
// I'm going to create explicitly, but if you
// just declare a function in a script block
// and *not* inside another function, that will
// automatically become a property of `window`
window.callback = childCallback;
function childCallback() {
document.getElementById('display').innerHTML =
'Got callback from child window at ' + new Date();
}
})();
</script>
</html>
(No hace tienen utilizar una función de alcance como lo hice anteriormente, pero es útil para mantener las variables globales contenida.)
Código de hijo del primer ejemplo en vivo:
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Child Window</title>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
article, aside, figure, footer, header, hgroup,
menu, nav, section { display: block; }
</style>
</head>
<body>
<p>I'm the child window</p>
</body>
<script type='text/javascript'>
if (window.opener) {
// Call the provided callback
window.opener.callback();
// Do something directly
var p = window.opener.document.createElement('p');
p.innerHTML = "I was added by the child directly.";
window.opener.document.body.appendChild(p);
}
</script>
</html>
window.parent.top.location = window.parent.top.location; (o algo similar a eso lo hará)
window.opener es quizás mejor – automagic
Si ninguna de las otras sugerencias funciona (recuerde probar en todos los navegadores principales), también puede tratar de pasar una referencia de la ventana primaria explícitamente a la ventana secundaria. Debido window.open()
debe devolver una referencia a la ventana secundaria .. para que pueda hacer child = window.open()
y entonces usted puede hacer algo como child.myParent = window
Muy cierto. 'window.opener' es confiable y excluye el SOP, y esto también entrará en conflicto con el SOP, pero es bueno tener opciones. Tienes que lidiar con el tiempo un poco, que es parte de por qué prefiero que el niño llame al padre. –
que tenía el mismo problema con la presentación de un formulario en un modal a través de AJAX y necesito la página debajo (padres página) para volver a cargar. window.location.reload();
funcionó para mí.
- 1. Actualizar la ventana primaria desde la ventana secundaria usando javascript
- 2. Volver a cargar la ventana primaria desde la ventana secundaria
- 3. ¿Cómo cerrar fancybox desde la ventana secundaria?
- 4. Javascript pasando datos desde la ventana de la ventana hijo a la ventana principal, IE error?
- 5. ¿Cómo ejecutar la función de la ventana principal cuando se cierra la ventana secundaria?
- 6. actualizar la ventana primaria al cerrar la ventana secundaria
- 7. WPF. Cómo ocultar/mostrar la ventana principal desde otra ventana
- 8. ¿Por qué el cierre de la última ventana secundaria minimiza su ventana principal?
- 9. ¿Cómo ejecutar la función de la ventana primaria cuando se cierra la ventana secundaria?
- 10. ¿Cómo abrir una nueva ventana secundaria desde otra ventana secundaria en vaadin?
- 11. Establecer la variable en la ventana principal desde iframe
- 12. Esperando la carga de la ventana secundaria para completar
- 13. Cómo cerrar la ventana emergente y redireccionar la ventana principal
- 14. PostMessage desde WorkerThread a la ventana principal en MFC
- 15. ¿Cómo pasar datos a la ventana principal desde la ventana emergente?
- 16. Cocoa/Objective-C - Ventana secundaria con entrada de texto sin ventana principal inactiva
- 17. ¿Cómo llamar al método de la ventana principal de WPF desde la ventana modal?
- 18. Ventana del propietario de WPF en la parte superior de la ventana secundaria
- 19. ¿Se puede notificar a la ventana principal cuando se cierra una ventana secundaria? (en un dominio de diferenciación)
- 20. C# Ventana de creación - Definición de la ventana principal
- 21. Llevar la ventana principal al frente después de que la pantalla secundaria se apague
- 22. En Google Chrome, ¿cómo traigo una ventana emergente existente al frente usando javascript desde la ventana principal?
- 23. jQuery: recibir documento listo() en la ventana secundaria
- 24. javascript: ¿Cómo puede una ventana principal saber que su ventana hija está cerrada?
- 25. WPF - ¿Establece la posición de la ventana de diálogo relativa a la ventana principal?
- 26. ShowDialog() detrás de la ventana principal
- 27. ¿Diálogo como ventana principal?
- 28. Refrescando ventana principal después de cerrar ventana emergente
- 29. ¿Cómo puedo acceder al árbol dom de la ventana secundaria?
- 30. vim: abrir la ventana de vista previa sin mover el texto en la ventana principal
¿Te refieres a "Actualizar el directorio original de CHILD"? Me gusta el chile verde, que es de Nuevo México, pero no sé qué es un chile en este contexto. –
window.parent ¿verdad? 'window.parent.frames [0]' o similar https://developer.mozilla.org/en/DOM –
window.opener es generalmente lo que llamará en la ventana secundaria. ¿Puedes mostrar tu script usando para abrir esta nueva ventana? –