js如何关闭当前页面

请问js如何关闭当前页面,能够兼容主流的浏览器,网上找的这个例子,没有用

//FF中需要修改配置window.close方法才能有作用,为了不需要用户去手动修改,所以用一个空白页面显示并且让后退按钮失效
//Opera浏览器旧版本(小于等于12.16版本)内核是Presto,window.close方法有作用,但页面不是关闭只是跳转到空白页面,后退按钮有效,也需要特殊处理

var userAgent = navigator.userAgent;
if (userAgent.indexOf("Firefox") != -1 || userAgent.indexOf("Presto") != -1) {
    window.location.replace("about:blank");
} else {
    window.opener = null;
    window.open("", "_self");
    window.close();
}

Chrome下提示:
Scripts may close only the windows that were opened by it.

阅读 22.2k
2 个回答
<a href="javascript:window.opener=null;window.open('','_self');window.close();">关闭</a>

同样网上找了很多方法,都不行。
然后我再认真理解一下浏览器提示的信息:

不能关闭非当前窗口打开的页面。

网上找到的方法:

window.opener = null;
window.open("", "_self");
window.close();

第一行中的window.opener=null; 我不知道为什么会有这种写法,按理说:a页面中window.open了b页面,b页面中的window.opener是a页面,a页面的window对象中并没有opener;但这种方法却在使用open以前使用opener,我看不懂这一行代码。

第二行代码中的open打开的页面url是空的,实际上并不会产生什么效果。
如果要跳转在原页面,可以写成:
window.open(location.href,"_self");//第二行
window.close();//第三行

这样就相当于刷新了当前页面,也就是说代码执行到第二行的时候就刷新页面,没有执行下一行代码了。
如果把这两行代码放到一起,页面加载后就执行的话,实际的效果就是会不断地刷新页面。

那么,什么时候window.close()能够起作用呢?
a页面中使用var win=window.open("b页面");不能添加"_self"。
a页面中使用win.close();这里应该使用变量,而不能直接使用window.close(),因为这里的window是指当前的窗口,而不是open打开的那个窗口。

当然,如果你直接写成:
var win=window.open("b页面");
win.close();
这样只会看到页面有一下闪动,因为刚打开一个页面又被你关闭了。
所以win.close()应该放到某个事件中去执行,可以是onclick或者放到定时器里去。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题