您的位置: 首页 >日志>前端技术>详细内容

前端技术

window.close() 失效如何解决

来源:本站原创 发布时间:2023-01-06 09:06:56 浏览次数: 【字体:

自从更新了新版的谷歌浏览器和火狐浏览器后,一直很好使的window.close() 突然就失效了,于是网上查找了一番,终于发现问题所在了。

首先,看看为什么新版的浏览器为什么window.close()会失效。

官方解释:https://developer.mozilla.org/en-US/docs/Web/API/Window/close

按照官方的解析,大概意思就是说 window.close() 方法只能关闭由window.open()或者浏览器直接输入url打开的页面,其余情况安全考虑是被限制的。难怪window.open() 有时候可以,有时候不行,特别是我们文章详情页。因为我们的文章详情页是通过 <a> 链接,的 target="_blank" 实现新窗口打开的,而不是通过 window.open() 或 地址栏输入 url 打开,所以执行 window.close() 是无效的。

知道了问题所在,接下来我们看下如何解决这个问题。


解决办法一:

链接的打开方式用 window.open() 来实现,少量的定制页面可以这样来实现,但如果所有的信息列表都要改的话,就不太现实了。这个看情况来使用吧~

解决办法二:

window.open("about:blank","_self").close();

// 或者

window.open("","_self").close();


如果是iframe的时候

window.open("about:bank","_top").close();

// 或者

window.open("","_top").close();


解决办法三:

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


×

用户登录