JavaScript关闭当前页
本文由 小茗同学 发表于 2020-02-21 浏览(9755)
最后修改 2020-02-21 标签:关闭 页面

如题

出于安全考虑,普通页面直接执行window.close()时不会生效,控制台会出现如下警告:

Scripts may not close windows that were not opened by script.

只有那些通过<a target="_blank">链接</a>或者window.open()打开的页面才支持关闭,为什么这么规定呢?我猜大概可能是觉得,直接输入地址访问的页面可能比较重要,减少被恶意JS攻击的可能性吧,所以规定只有用脚本(或代码)打开的页面才能用脚本关闭。

当然,规定是死的,人是活的,也不是没有办法,网上找的一段代码,IE和火狐还未亲测,Chrome已确定没问题。

// 关闭页面
closeCurrentPage() {
	const ua = window.navigator.userAgent;
	if (ua.indexOf('MSIE') > 0) {
		if (ua.indexOf('MSIE 6.0') > 0) {
			window.opener = null;
			window.close();
		} else {
			window.open('', '_top');
			window.top.close();
		}
	} else {
		window.opener = null;
		window.open('', '_self', '');
		window.close();
	}
}