javascript的window.close()在chrome和firefox下失效的解决方法

JavaScript原生提供了一个window.close()方法,一看就知道是用来关闭浏览器窗口的方法。

W3CSchool对该方法的解释如下:

1.执行close()方法将关闭有window指定的顶层浏览器窗口。

2.某个窗口可以通过调用self.close()方法或只调用close()方法来关闭其自身。

3.只有通过JavaScript代码打开的窗口才能够由JavaScript代码关闭,这是为了阻止了恶意的脚本终止用户的浏览器。

在IE浏览器中,window.close()能生效,但是在生效的时候,会弹出包含警告信息的提示框,询问你是否关闭该窗口。

但是在Chrome浏览器或Firefox浏览器下则这个方法完全不会生效,如果你打了断点进行调试,就会发现这个方法是能运行通过的,也会照常执行,不会报错,只是没有执行的效果。

针对chrome浏览器,可以将代码做以下修改。

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

先通过window.open()在本窗口打开一个页面,然后再通过window.close()方法关闭。

这应验了这句话:只有通过JavaScript代码打开的窗口才能够由JavaScript代码关闭。

这段代码对IE浏览器和Chrome浏览器都是有效的,但是在Firefox浏览器下面无效。需要对Firefox浏览器进行如下操作:

1.在Firefox地址栏里输入about:config。

2.在配置列表中找到dom.allow_scripts_to_close_windows。

3.点右键的选切换把上面的false修改为true即可(默认是false,目的是为了防止脚本乱关窗口)。 

FireFox浏览器中做了如此设置以后,就可以直接使用window.close()关闭窗口。

当然了,为了三个浏览器的兼容性,还是写上面的兼容代码比较好。

事实上,现在各种框架早就摒弃了window.open这种方式,或做好了兼容性处理。

为什么今天记录这个问题,是因为我最近在维护一个有13年历史的老项目的代码,不仅维护还要往里面加新功能,好惨一开发。

 

"你要对得起你所有经受过的苦。"

你可能感兴趣的:(javascript的window.close()在chrome和firefox下失效的解决方法)