首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JavaScript window.close() 瀏覽器限制:非 window.open 開啟的頁面無法關閉

     編輯:程式設計疑難解答

核心規則

只有由 window.open() 開啟、或 <a target="_blank"> 導航開啟的頁面,才允許腳本 window.close() 關閉自身。

為何 IE 可關閉?

IE 早期版本未嚴格執行此安全限制,屬於非標準行為,現代瀏覽器 (Chrome/Firefox/Edge/Safari) 全部封鎖。

場景分析


// A.jsp 表單提交 → 導向 B.jsp (同分頁/同視窗)
// B.jsp 按鈕呼叫 window.close() → 失敗

這是**同一標籤頁內導航**,非 window.open 開啟的新視窗,故無權關閉。

替代方案

  1. 改為彈窗開啟 B:A 頁 window.open('B.jsp', '_blank', 'width=...,height=...'),B 頁即可 window.close()。
  2. 單頁應用 (SPA) 模式:不跳轉頁面,用路由/元件切換模擬「關閉」效果(隱藏元件、清空表單)。
  3. 回傳父頁:若 B 是由 A window.open 開啟,B 完成任務後 window.opener.location.reload(); window.close();。
  4. 歷史回退:window.history.back() 返回上一頁,非關閉視窗但體驗相近。

安全提醒

嘗試繞過限制 (如開啟 about:blank 再關閉) 屬於濫用,可能被瀏覽器攔截或未來版本失效,請採用正規架構方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved