現象:`window.open(url, name, specs)` 打開的窗口,後續在該窗口內跳轉(`location.href`、``、表單提交)時,新頁面繼承了原窗口的尺寸、工具欄、菜單欄等 `specs` 特性。
瀏覽器將 `window.open` 創建的窗口視為一個**具名瀏覽上下文**。同名目標(`name` 參數相同)的後續導航會復用該上下文,**保持窗口特性不變**。這是 HTML Standard 規定行為。
在被打開頁面的 `
` 首部插入:<script>
if (window.opener) {
// 移除尺寸限制,恢復默認工具欄
window.resizeTo(screen.availWidth, screen.availHeight);
window.moveTo(0, 0);
}
</script>
// 不傳第三個參數,或僅傳空字符串
window.open(url, '_blank', '');
// 新窗口將使用用戶默認設置(通常含地址欄、工具欄)
<script>
// 在目標頁面執行:用期望的 specs 重新打開自己並關閉舊窗口
window.open('', '_self', 'width=800,height=600,toolbar=yes,menubar=yes');
window.close(); // 關閉繼承特性的舊窗口
</script>