Window : propriété opener
Baseline
Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
La propriété opener de l'interface Window retourne une référence à la fenêtre ayant ouvert la fenêtre courante, que ce soit avec open(), ou via une navigation avec un lien doté d'un attribut target.
Autrement dit, si la fenêtre A ouvre la fenêtre B, B.opener retourne A.
Valeur
Un objet semblable à un objet Window qui fait référence à la fenêtre ayant ouvert la fenêtre courante (avec Window.open(), ou avec un lien doté d'un attribut target). Si la fenêtre n'a pas été ouverte par un lien ou créée par une autre fenêtre, la propriété retourne null.
Si l'ouvreur n'a pas la même origine que la page courante, les fonctionnalités de cet objet seront limitées. Ainsi, les variables et fonction associés à l'objet window ne seront pas accessibles. Toutefois, la navigation vers la fenêtre ouvrante est possible, autrement dit que la fenêtre ouverte peut ouvrir une URL dans l'onglet ou la fenêtre d'origine. Dans certains cas, cela peut permettre de l'hameçonnage où une page de confiance, ouverte par la fenêtre originale est remplacée par une page d'hameçonnage par la page nouvellement ouverte.
Pour être exact, pour les objets opener cross-origin, les propriétés suivantes sont disponibles :
windowselflocation: avec uniquement les propriétésLocation.replaceetLocation.hrefdisponiblescloseclosedfocusblurframeslengthtopopenerparentpostMessagewindow[0],window[1], etc.
De plus, il existe quelques propriétés : then, [Symbol.toStringTag], [Symbol.hasInstance], [Symbol.isConcatSpreadable], qui sont utilisées par diverses opérations JavaScript. Ces propriétés ont pour valeur undefined. Toutes les autres propriétés génèrent une SecurityError DOMException lorsqu'elles sont accessibles.
Dans les cas suivants, le navigateur ne renseigne pas window.opener, mais le laisse à null :
- Si
rel="noopener"est présent sur le lien ou si on a passénoopenervia le paramètrewindowFeatures. - Si la fenêtre a été ouverte avec un lien dont l'attribut
targetvaut_blank, à moins qu'il ait été explicitement demandé avec withrel="opener". - Si l'en-tête
Cross-Origin-Opener-Policypossède la valeursame-origin. La nouvelle fenêtre étant chargée dans un contexte de navigation différent, elle n'aura pas de référence à la fenêtre ouvrante.
Spécifications
| Specification |
|---|
| HTML> # dom-opener-dev> |