window.close() not work

简介:

其实本身我一直以为window.close()直接关闭当前窗口,也很少使用到这种方法,知道一个后台朋友问我怎么关闭浏览器当前窗口后,我脱口而说’window.close()'后,他说不好用,我就自己尝试了一下,果然出现了问题,所以我才会很认真的看了一下,写一些关于这个问题的心得.

1.起源:

有的时候我们需求要求我们在某种特殊情况下关闭当前浏览器窗口,而Bom也为我们提供了一个方法去关闭当前浏览器窗口;
那就是window.close();这个方法可以很有效的关闭我们当前的浏览器视口,但是有的时候会无法关闭,在console中会出现一下warm:


Scripts may close only the windows that were opened by it.


其实翻译过来就是脚本应该只能关闭在当前窗口中新打开的窗口;
其实也就是通过window.open()打开的窗口;
而之所以有这种设置,也要归功于浏览器本身的安全机制;试想一下,如果脚本触发后可以直接关闭当前窗口,那就有可能会出现很多问题;包括.xss攻击后导致页面直接无法打开或者直接关闭,这就会很危险了;所以浏览器才会有这种机制;

2.解决

当然,既然浏览器有这样的机制,而我们有具有关闭当前页面的需求的话,就可以使用这个方法
window.open('about:blank', '_self')
这段代码本身是新开一个页面,只不过是基于当前页面而新开,并将新开的页面的url设置为about:blank;而已,可以基本解决关闭当前页面的需求了,虽然会新开一个空页面;

3.后记

网上其实有很多中解决方式,但是大多数还是不是很好用的,有很多方案是直接copy过来的,所以自己写了一个;其实有很多技术问题最好还是Google,baidu的并不是特别
全面.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值