Lors de l'utilisation de la fenêtre.ouvre-porte / fenêtre.parent / fenêtre.haut


En JavaScript quand utiliser window.opener / window.parent / window.top ?

Author: chriz, 2012-07-03

4 answers

  • window.opener renvoie à la fenêtre qui a appelé window.open( ... ) pour ouvrir la fenêtre à partir de laquelle il est appelé
  • 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 haute d'une fenêtre imbriquée dans une ou plusieurs couches de <iframe> sous-fenêtres

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

 132
Author: Pointy, 2012-07-03 14:34:05

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.ouvreur 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 devait transmettre des informations à la fenêtre principale. Cependant, cela est limité par la stratégie d'origine, vous devez donc garantir à la fois le contenu de la boîte de dialogue et la fenêtre d'ouverture est chargée à 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 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 de iframing 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
      • Dialogue 2 Ouvert Par Dialogue 1

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, ayez la boîte de dialogue 1 définissez une propriété sur la boîte de dialogue 2 qui fait référence à l'ouvreur Dialog1.

Donc, si "childwindow" est votre variable pour l'objet fenêtre de dialogue 2, et "window" est la variable pour l'objet fenêtre de dialogue 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 exécuté dans dialog2, vous devriez pouvoir utiliser window.appMainWindow pour référencer la fenêtre principale, objet window.

Espoir cela aide.

 21
Author: Mark At Ramp51, 2013-10-03 15:31:09

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 - > renvoie la fenêtre la plus haute, si vous utilisez des cadres, c'est la fenêtre frameset, si vous n'utilisez pas de cadres, c'est la même chose que window ou self.
  3. window.parent - > renvoie la trame parent de la trame courante ou de l'iframe. Le cadre parent peut être la fenêtre frameset ou un autre cadre si vous avez imbriqué cadre. Si vous n'utilisez pas de frames, parent est le même que la fenêtre actuelle ou self
 5
Author: Ravish, 2012-07-03 14:39:03

Lorsque vous avez affaire à une fenêtre contextuelle.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.ouvreur ou nous voulons des données sur la fenêtre enfant ou la fenêtre contextuelle au moment du chargement, puis à nouveau nous pouvons définir les valeurs à l'aide de window.ouvreur

 1
Author: Uday Jadhav, 2014-06-21 11:34:49