window.close() 失效如何解决
自从更新了新版的谷歌浏览器和火狐浏览器后,一直很好使的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(); }
用户登录
还没有账号?
立即注册