En JavaScript, ¿cuándo usar window.opener
/ window.parent
/ window.top
?
Respuestas:
window.opener
se refiere a la ventana que llamó window.open( ... )
para abrir la ventana desde la que se llamawindow.parent
se refiere al padre de una ventana en una <frame>
o<iframe>
window.top
se refiere a la parte superior-más ventana de una ventana anidado en una o más capas de <iframe>
sub-ventanasEsos serán null
(o tal vez undefined
) cuando no sean relevantes para la situación de la ventana de referencia. ("Ventana de referencia" significa la ventana en cuyo contexto se ejecuta el código JavaScript).
window.open()
al enviar la página. Ahora esta ventana secundaria abre otra ventana secundaria con el mismo window.open()
yo de cierre. Ahora, cuando envíe mi segundo hijo (el primer hijo ya no existe), me gustaría acceder a los elementos de la página de mi página principal. ¿Es esto posible a partir del segundo hijo cuando el primero ya no está presente?
window.opener.opener
antes de que desaparezca la página intermedia.
Creo que necesitas agregar algo de contexto a tu pregunta. Sin embargo, aquí se puede encontrar información básica sobre estas cosas:
window.opener
https://developer.mozilla.org/en-US/docs/Web/API/Window.opener
He usado window.opener principalmente al abrir una nueva ventana que actuaba como un cuadro de diálogo que requería la entrada del usuario y necesitaba pasar información a la ventana principal. Sin embargo, esto está restringido por la política de origen, por lo que debe asegurarse de que tanto el contenido del cuadro de diálogo como la ventana de apertura se carguen desde el mismo origen.
window.parent
https://developer.mozilla.org/en-US/docs/Web/API/Window.parent
He usado esto principalmente cuando trabajo con IFrames que necesitan comunicarse con el objeto de ventana que los contiene.
window.top
https://developer.mozilla.org/en-US/docs/Web/API/Window.top
Esto es útil para asegurarse de que está interactuando con la ventana del navegador de nivel superior. Puede usarlo para evitar que otro sitio enmarque su sitio web, entre otras cosas.
Si agrega más detalles a su pregunta, puedo proporcionar otros ejemplos más relevantes.
ACTUALIZACIÓN:
Hay algunas formas en que puede manejar su situación.
Tienes la siguiente estructura:
Cuando Dialog 1 ejecuta el código para abrir Dialog 2, después de crear Dialog 2, haga que dialog 1 establezca una propiedad en Dialog 2 que haga referencia al abridor Dialog1.
Entonces, si "childwindow" es su variable para el objeto de ventana de diálogo 2, y "ventana" es la variable para el objeto de ventana de diálogo 1. Después de abrir el cuadro de diálogo 2, pero antes de cerrar el cuadro de diálogo 1, realice una asignación similar a esta:
childwindow.appMainWindow = window.opener
Después de realizar la asignación anterior, cierre el cuadro de diálogo 1. Luego, desde el código que se ejecuta dentro de dialog2, debería poder usar
window.appMainWindow
para hacer referencia a la ventana principal, el objeto de ventana.
Espero que esto ayude.
window.open()
al enviar la página. Ahora esta ventana secundaria abre otra ventana secundaria con el mismo window.open()
yo de cierre. Ahora, cuando envíe mi segundo hijo (el primer hijo ya no existe), me gustaría acceder a los elementos de la página de mi página principal. ¿Es esto posible a partir del segundo hijo cuando el primero ya no está presente?
top, parent, abridor (así como window, self e iframe) son todos objetos de ventana.
window.opener
-> devuelve la ventana que abre o lanza la ventana emergente actual.window.top
-> devuelve la ventana superior, si está usando marcos, esta es la ventana del conjunto de marcos, si no usa marcos, es lo mismo que window o self.window.parent
-> devuelve el marco principal del marco actual o iframe. El marco principal puede ser la ventana del conjunto de marcos u otro marco si tiene marcos anidados. Si no usa marcos, padre es el mismo que la ventana actual o autocuando se trata de ventanas emergentes, window.opener juega un papel importante, porque tenemos que lidiar con los campos de la página principal y la página secundaria, cuando tenemos que usar valores en la página principal, podemos usar window.opener o queremos algunos datos en la ventana secundaria o ventana emergente en el momento de la carga, nuevamente podemos establecer los valores usando window.opener