此示例使用 HTML + Canvas 實現滑動拼圖驗證碼。Canvas繪制帶隨機缺口的背景,獨立滑塊按鈕監聽滑鼠/觸摸拖拽,實時將滑塊位置映射到Ca...
`window.opener`屬性
本文摘要
`window.opener`屬性可返回創建當前窗口的父窗口引用,用於跨窗口通信。然而,非由其他窗口打開的窗口可能返回`null`或`undefined`。需警惕利用此屬性的反向標簽劫持攻擊。建議使用`target="_blank"`時添加`rel="noopener noreferrer"`以增強安全。
`window.opener`是一個可讀可寫的屬性,用於返回對創建當前窗口的父窗口的引用。當在一個窗口中訪問`window.opener`屬性時,它會返回打開該窗口的父窗口對象。通過該屬性,可以使用父窗口對象中的方法和屬性,實現跨窗口的數據傳遞和操作。
例如,通過`window.opener`可以訪問父窗口的全局變量、函數和對象,這在子窗口中獲取父窗口的數據或調用父窗口的方法時非常有用。

然而,如果窗口不是由其他窗口打開的,`window.opener`屬性在某些瀏覽器(如Netscape)中返回`null`,而在另一些瀏覽器(如IE)中返回“未定義”(undefined)。需要註意的是,`undefined`不是JavaScript的常數,如果嘗試使用它,將真的返回“未定義”。
此外,需要警惕反向標簽劫持這種網絡攻擊技術,它利用了`window.opener`屬性。當用戶在瀏覽器中通過點擊一個帶有`target="_blank"`屬性的鏈接打開一個新標簽頁時,攻擊者可能會利用新標簽頁與原始標簽頁之間的窗口關系(通過`window.opener`屬性),執行惡意腳本或重定向,從而影響或控制原始標簽頁的內容或行為。為了防範這種攻擊,除了避免不必要地使用`target="_blank"`之外,推薦的做法是在使用`target="_blank"`的同時,添加`rel="noopener noreferrer"`屬性。
總的來說,`window.opener`屬性在JavaScript中提供了與打開當前窗口的父窗口之間的通信和交互的能力,但在使用時需要註意安全和隱私保護的問題。
標籤: 窗口 屬性 window.opener 返回 標簽 打開
相關文章
