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 |
瀏覽器相容性
載入中…