En JavaScript, quand utiliser window.opener
/window.parent
/window.top
?
window.opener
fait référence à la fenêtre appelée window.open( ... )
pour ouvrir la fenêtre à partir de laquelle elle est appelée.window.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 en haut d'une fenêtre imbriquée dans une ou plusieurs couches de sous-fenêtres <iframe>
Celles-ci seront null
(ou peut-être undefined
) si elles ne sont pas pertinentes pour la situation de la fenêtre de renvoi. ("Fenêtre de référence" désigne la fenêtre dans le contexte de laquelle le code JavaScript est exécuté.)
Je pense que vous devez ajouter un peu de 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 principalement utilisé window.opener lors de l'ouverture d'une nouvelle fenêtre faisant office de boîte de dialogue nécessitant la saisie de l'utilisateur et devant renvoyer des informations à la fenêtre principale. Toutefois, cela est limité par la stratégie d'origine. Vous devez donc vous assurer que le contenu de la boîte de dialogue et 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 utilisé principalement lorsque je travaille avec des IFrames devant 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 de navigateur de niveau supérieur. Vous pouvez l’utiliser pour empêcher, entre autres, un autre site de codifier votre site Web.
Si vous ajoutez un peu plus de détails à votre question, je pourrai vous donner d'autres exemples plus pertinents.
UPDATE: 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 la création de 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 Dialog1.
Donc, si "childwindow" est votre variable pour l'objet window de dialogue 2, et "window" est la variable pour l'objet window de Dialog 1. Après avoir ouvert la boîte de dialogue 2, mais avant la fermeture de la boîte de dialogue 1, effectuez un travail similaire à celui-ci:
childwindow.appMainWindow = window.opener
Après avoir effectué l’affectation ci-dessus, fermez la boîte de dialogue 1. Ensuite, à partir du code exécuté dans la boîte de dialogue2, vous devriez pouvoir utiliser window.appMainWindow
pour faire référence à l’objet window de la fenêtre principale.
J'espère que cela t'aides.
top, parent, ouvreur (ainsi que window, self et iframe) sont tous des objets window.
window.opener
-> renvoie la fenêtre qui s'ouvre ou lance la fenêtre contextuelle actuelle.window.top
-> renvoie la fenêtre la plus haute. Si vous utilisez des cadres, il s'agit de la fenêtre du jeu de cadres. Si vous n'utilisez pas de cadres, cela revient à window ou à vous-même.window.parent
-> renvoie le cadre parent du cadre actuel 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, parent est identique à la fenêtre actuelle ou autowindow.opener joue un rôle important dans le traitement des champs de page parent et de page enfant; lorsque nous devons utiliser les valeurs de 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 à l’aide de window.opener