En JavaScript, quand utiliser window.opener
/ window.parent
/ window.top
?
Réponses:
window.opener
fait référence à la fenêtre qui a appelé window.open( ... )
pour ouvrir la fenêtre à partir de laquelle elle est appeléewindow.parent
fait référence au parent d'une fenêtre dans un <frame>
ou<iframe>
window.top
fait référence à la fenêtre la plus haute d'une fenêtre imbriquée dans une ou plusieurs couches de <iframe>
sous-fenêtresCelles-ci le seront null
(ou peut-être undefined
) lorsqu'elles ne sont pas pertinentes par rapport à la situation de la fenêtre de référence. ("Fenêtre de référence" désigne la fenêtre dans le contexte de laquelle le code JavaScript est exécuté.)
window.open()
une page soumettre. Maintenant, cette fenêtre enfant ouvre une autre fenêtre enfant avec le même window.open()
self de fermeture. Désormais, lorsque je soumets mon deuxième enfant (le premier enfant n'existe plus), je souhaite accéder aux éléments de page de ma page principale. Est-ce possible à partir du deuxième enfant lorsque le premier n'est plus présent?
window.opener.opener
avant que la page intermédiaire ne disparaisse.
Je pense que vous devez ajouter du contexte à votre question. Cependant, des informations de base sur ces choses peuvent être trouvées ici:
window.opener
https://developer.mozilla.org/en-US/docs/Web/API/Window.opener
J'ai utilisé window.opener principalement lors de l'ouverture d'une nouvelle fenêtre qui agissait comme une boîte de dialogue nécessitant une entrée de l'utilisateur et devant renvoyer des informations à la fenêtre principale. Cependant, cela est limité par la politique d'origine, vous devez donc vous assurer que le contenu de la boîte de dialogue et de la fenêtre d'ouverture sont chargés à partir de la même origine.
window.parent
https://developer.mozilla.org/en-US/docs/Web/API/Window.parent
Je l'ai surtout utilisé lorsque je travaille avec des IFrames qui doivent communiquer avec l'objet window qui les contient.
window.top
https://developer.mozilla.org/en-US/docs/Web/API/Window.top
Ceci est utile pour vous assurer que vous interagissez avec la fenêtre du navigateur de niveau supérieur. Vous pouvez l'utiliser pour empêcher un autre site d'iframe votre site Web, entre autres.
Si vous ajoutez plus de détails à votre question, je peux vous fournir d’autres exemples plus pertinents.
MISE À JOUR:
Il existe plusieurs façons de gérer votre situation.
Vous avez la structure suivante:
Lorsque la boîte de dialogue 1 exécute le code pour ouvrir la boîte de dialogue 2, après avoir créé la boîte de dialogue 2, demandez à la boîte de dialogue 1 de définir une propriété sur la boîte de dialogue 2 qui fait référence à l'ouvre-boîte de dialogue Dialog1.
Donc, si "childwindow" est votre variable pour l'objet fenêtre de dialogue 2, et "fenêtre" est la variable pour l'objet de fenêtre Dialog 1. Après avoir ouvert la boîte de dialogue 2, mais avant de fermer la boîte de dialogue 1, effectuez une affectation similaire à celle-ci:
childwindow.appMainWindow = window.opener
Après avoir effectué l'affectation ci-dessus, fermez la boîte de dialogue 1. Ensuite, à partir du code qui s'exécute dans dialog2, vous devriez pouvoir utiliser
window.appMainWindow
pour référencer la fenêtre principale, l'objet de la fenêtre.
J'espère que cela t'aides.
window.open()
une page soumettre. Maintenant, cette fenêtre enfant ouvre une autre fenêtre enfant avec le même window.open()
self de fermeture. Maintenant, lorsque je soumets mon deuxième enfant (le premier enfant n'existe plus), je voudrais accéder aux éléments de page de ma page principale. Est-ce possible à partir du deuxième enfant lorsque le premier n'est plus présent?
top, parent, opener (ainsi que window, self et iframe) sont tous des objets window.
window.opener
-> renvoie la fenêtre qui ouvre ou lance la fenêtre popup courante.window.top
-> renvoie la fenêtre la plus haute, si vous utilisez des cadres, c'est la fenêtre du jeu de cadres, si vous n'utilisez pas de cadres, c'est la même chose que window ou self.window.parent
-> renvoie l'image parente de l'image courante ou de l'iframe. Le cadre parent peut être la fenêtre du jeu de cadres ou un autre cadre si vous avez des cadres imbriqués. Si vous n'utilisez pas de cadres, le parent est le même que la fenêtre ou soilorsque vous avez affaire à des popups window.opener joue un rôle important, car nous devons traiter les champs de la page parent ainsi que la page enfant, lorsque nous devons utiliser des valeurs sur la page parent, nous pouvons utiliser window.opener ou nous voulons des données sur la fenêtre enfant ou la fenêtre contextuelle au moment du chargement, nous pouvons à nouveau définir les valeurs en utilisant window.opener