首頁 > web前端 > js教程 > 為什麼 `window.close()` 在 Chrome 中不起作用,如何修復它?

為什麼 `window.close()` 在 Chrome 中不起作用,如何修復它?

Linda Hamilton
發布: 2025-01-01 11:19:10
原創
808 人瀏覽過

Why Doesn't `window.close()` Work in Chrome, and How Can I Fix It?

Window.close() 在Chrome 中失敗:一項安全措施

在Web 開發領域,據觀察,調用window JavaScript 中的.close() 或self.close() 已停止關閉Chrome 瀏覽器中的目標視窗。此行為源自於 Chrome 實施的重要安全措施,旨在防止惡意程式碼和未經請求的彈出視窗損害使用者的瀏覽體驗。

視窗的關閉主要僅限於產生這些視窗的腳本。 Chrome 嚴格遵守這項原則,不允許外部腳本任意關閉。然而,此規則的一個值得注意的例外僅適用於作者產生的 JavaScript,從而可以關閉由相同腳本建立的視窗。

Firefox 的更嚴格實現

Firefox另一方面,強制執行更嚴格的策略,禁止視窗關閉,除非呼叫腳本使用window.open() 方法顯式創建視窗。任何繞過此限制的嘗試都會導致 Firefox 中出現錯誤訊息,而 Chrome 則選擇靜默失敗。

針對 Chrome 用戶的緩解措施

要解決 Chrome 中的這項挑戰,之前曾利用過「自我重定向」漏洞。然而,這種技術在目前版本的瀏覽器中基本上無效。儘管如此,該策略的修改版本仍然可以在有限的情況下使用。透過使用具有明確 @grant 授權的 Tampermonkey,仍然可以利用 window.close() 來關閉 Chrome 中的其他標籤(如果存在)。

對於 Firefox 用戶,唯一可行的解​​決方案是停用內建安全性瀏覽器內的設定。但是,由於與弱化的瀏覽器配置相關的安全風險更高,強烈建議不要這樣做。

長期解決方案和增強功能

規避此問題的最有效方法永久限制是開發 Chrome 擴充功能或 Firefox 外掛程式。這些機制提供了可靠的窗戶關閉功能。此外,向 Greasemonkey 和 Tampermonkey 的維護者提出功能請求等功能可能會為使用者腳本作者帶來進一步的改進和簡化的實作。

以上是為什麼 `window.close()` 在 Chrome 中不起作用,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板