考虑到安全策略,浏览器只允许Javascript关闭由javascript打开的页面。 为了用js关闭当前窗口,我们可以这样考虑javascript关闭窗口,这也是最常用的方法。
fdsafas
function xx(){
// 重置window.opener用来获取打开当前窗口的窗口引用
// 这里置为null,避免IE下弹出关闭页面确认框
window.opener = null;
// JS重写当前页面
window.open("", "_self", "");
// 顺理成章的关闭当前被重写的窗口
window.close();
}
Guilao 在 stackoverflow 上的原始解释:
出于安全原因,如果窗口是由 JavaScript 打开的javascript关闭窗口,则只能在 JavaScript 中关闭该窗口。
另附上另一个解决方案:
window.open('javascript:window.open("", "_self", "");window.close();', '_self');
嵌入的 javascript:window.open("","_self",""); 是为了防止IE弹出确认关闭框,相当于重置window.opener
FireFox对外支持window.close,但是由于其自身的设置,不允许JS自行关闭窗口,因此用户需要自动将about:config下的dom.allow_scripts_to_close_windows的值改为true,然后根据问题解决对上述想法。
很多情况下,用户不会自动更改FireFox的设置。 这里也有一个妥协。 将“close”行为更改为“location.href”跳转,仅适用于FireFox
function xx(){
location.href = "about:blank";
}
综上,JS部分可以改成如下:
var xx = navigator.userAgent.indexOf("Firefox") > -1 ?
function(){location.href = "about:blank";}
:
function(){
window.opener = null;
window.open("", "_self", "");
window.close();
};