Window: opener 属性
Window 接口的 opener 属性返回一个对打开当前窗口的窗口的引用,无论是通过 open() 方法打开的,还是通过带有 target 属性的链接导航打开的。
换句话说,如果窗口 A 打开窗口 B,则 B.opener 返回 A。
值
一个引用打开当前窗口的窗口的类似 Window 的对象(使用 window.open(),或通过设置了 target 属性的链接)。如果此窗口不是通过链接或由另一个窗口创建而打开的,则返回 null。
如果打开者与当前页面不在同一源上,则打开者对象的功能会受到限制。例如,无法访问窗口对象上的变量和函数。但是,可以导航打开者窗口,这意味着新打开的页面可以在原始选项卡或窗口中打开一个 URL。在某些情况下,这使得网络钓鱼攻击成为可能,即新打开的页面将原始窗口中打开的可信页面替换为网络钓鱼页面。
确切地说,对于跨域的打开者对象,以下属性可用:
windowselflocation:只有Location.replace和Location.href属性可用closeclosedfocusblurframeslengthtopopenerparentpostMessagewindow[0]、window[1]等
此外,还有一些属性:then、[Symbol.toStringTag]、[Symbol.hasInstance]、[Symbol.isConcatSpreadable],这些属性被各种 JavaScript 操作使用。这些属性的值为 undefined。所有其他属性在访问时都会生成 SecurityError DOMException。
在以下情况下,浏览器不会填充 window.opener,而是将其保留为 null:
- 可以通过在链接上指定
rel=noopener,或在windowFeatures参数中传递noopener来省略打开者。 - 因为带有
_blanktarget的链接而打开的窗口不会获得opener,除非明确地使用rel=opener请求。 - 带有
same-origin值的Cross-Origin-Opener-Policy头部会阻止设置opener。由于新窗口在不同的浏览上下文中加载,它不会引用打开它的窗口。
规范
| 规范 |
|---|
| HTML # dom-opener-dev |
浏览器兼容性
加载中…