javascript variable Quand utiliser window.opener/window.parent/window.top




objet window javascript (4)

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 un <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 sous-fenêtres <iframe>

Ceux-ci seront null (ou peut-être undefined ) quand ils ne sont pas pertinents à la situation de la fenêtre référente. ("Fenêtre de référence" désigne la fenêtre dans le contexte de laquelle le code JavaScript est exécuté.)


top, parent, opener (ainsi que window, self et iframe) sont tous des objets window.

  1. window.opener -> renvoie la fenêtre qui ouvre ou lance la fenêtre contextuelle actuelle.
  2. window.top -> retourne la fenêtre la plus window.top , 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.
  3. window.parent -> renvoie l'image parente de l'image courante ou iframe. Le cadre parent peut être la fenêtre du jeu de cadres ou une autre image si vous avez des images imbriquées. Si vous n'utilisez pas de cadres, le parent est le même que la fenêtre courante ou l'individu

quand vous avez affaire à des popups window.opener joue un rôle important, parce que nous devons traiter les champs de la page parent ainsi que la page enfant, quand nous devons utiliser des valeurs sur la page parent, nous pouvons utiliser window.opener ou nous voulons des données sur la fenêtre de l'enfant ou la fenêtre contextuelle au moment du chargement, puis à nouveau, nous pouvons définir les valeurs en utilisant window.opener


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 utilisé window.opener principalement lors de l'ouverture d'une nouvelle fenêtre qui agissait comme une boîte de dialogue qui nécessitait une entrée utilisateur, et qui nécessitait de renvoyer des informations à la fenêtre principale. Cependant, ceci est limité par la politique 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 surtout utilisé lorsque je travaille avec des IFrames qui ont besoin de 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'iframer votre site Web, entre autres choses.

Si vous ajoutez plus de détails à votre question, je peux fournir d'autres exemples plus pertinents.

MISE À JOUR: Il existe plusieurs façons de gérer votre situation.
Vous avez la structure suivante:

  • Fenêtre principale
    • Dialogue 1
      • Boîte de dialogue 2 ouverte par la boîte de dialogue 1

Lorsque Dialog 1 exécute le code pour ouvrir Dialog 2, après avoir créé Dialog 2, le dialogue 1 définit une propriété sur Dialog 2 qui fait référence à l'ouvre Dialog1.

Donc, si "childwindow" est une variable pour l'objet de fenêtre dialog 2, et "window" est la variable pour l'objet de fenêtre Dialog 1. Après l'ouverture du dialogue 2, mais avant la fermeture du dialogue 1, faites une affectation similaire à ceci:

childwindow.appMainWindow = window.opener

Après avoir fait 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 window.

J'espère que cela t'aides.







window