firefox 默认不支持 window.close();

本文介绍了解决Firefox浏览器默认禁用网页脚本关闭当前窗口的问题。通过在Firefox的about:config设置中启用dom.allow_scripts_to_close_windows选项,允许网页脚本关闭窗口。

window.close();这个方法本来可以让浏览器关闭当前自身页面,可我弄来弄去就是没有效果。感觉不对我用IE一试,竟然可以,这才知道是我用Firefox浏览器的问题,Firefox默认不支持这个功能,需要设置Firefox浏览器。

设置方法
打开Firefox浏览器,地址栏中输入about:config
找到dom.allow_scripts_to_close_windows项,双击一下就将会其修改为true,再重启Firefox。

参考原文:http://chengshuai0423-126-com.javaeye.com/blog/696434

### 为什么 `window.close` 方法会失效 现代浏览器出于安全性和用户体验的考虑,对 `window.close()` 的行为进行了严格的限制。通常情况下,只有当窗口是由 JavaScript 动态创建时(即通过 `window.open()` 打开的新窗口),才能成功调用 `window.close()` 关闭该窗口[^3]。 如果尝试关闭未由脚本动态打开的窗口(例如用户手动打开的标签页或浏览器默认加载的页面),大多数主流浏览器(如 Chrome 和 Firefox)都会阻止此操作并抛出错误[^1]。 --- ### 解决方案概述 尽管存在上述限制,仍然有一些变通方式可以模拟关闭窗口的行为: #### 方法一:重定向到登录或其他初始页面 可以通过修改当前页面的内容来达到“关闭”的效果。例如,在确认提示后将用户重定向至其他页面: ```javascript if (confirm("确定要退出吗?")) { window.location.href = "../tLoginAdmin.jsp"; // 跳转到指定页面 } ``` 这种方法不会真正关闭窗口,但能够满足某些场景下的需求[^2]。 #### 方法二:设置 opener 属性为空后再关闭 部分开发者建议先清空 `opener` 对象再执行关闭逻辑: ```javascript window.opener = null; window.open('', '_self'); window.close(); ``` 然而需要注意的是,这种方式在最新版本的 Chrome 和 Firefox 中可能依然不可靠[^4]。 #### 方法三:强制刷新为 about:blank 页面 虽然不能完全关闭窗口,但可以让其显示为空白状态作为替代措施: ```javascript window.open('about:blank', '_self').close(); ``` 不过这同样不是理想的解决方案,因为它实际上并未销毁目标窗口实例。 --- ### 实际应用中的注意事项 由于各浏览器厂商持续加强对于潜在恶意脚本活动的安全防护机制,任何试图绕过这些规则的做法都可能存在兼容性风险或者违反隐私政策的风险。因此推荐优先采用更自然的方式引导用户自行完成相应动作而不是强行干预他们的浏览环境[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值