JavaScript - 关闭当前窗口 - Scripts may close only the windows that were opened by them.
前言
有2个页面
[
"Source.html",
"Target.html",
]
其中,Target.html
页面中还有几个iframe页面,
想实现的功能是,
1.点击Source.html
中的一个a
标签,跳转到Target.html
页面,
2.在Target.html
页面操作完成之后,
点击Target.html
页面中的关闭按钮,关闭Target.html
页面
问题出在了,
跳转到了Target.html
页面之后,
不在Target.html
页面的几个iframe之间切换的话,
是可以点击Target.html
页面中的关闭按钮,关闭Target.html
页面.
但是,如果在Target.html
页面中切换几个iframe,
此时在点击Target.html
页面的关闭按钮,是没有办法关闭Target.html
页面的.
网络上标准答案
//第一种形式
window.opener = null;
window.open('', '_self', '');
window.close();
//第2种方式
var customWindow = window.open('', '_blank', '');
customWindow.close();
// 关闭页面
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();
}
}
使用了标准答案之后,控制台出现提示语
Scripts may close only the windows that were opened by them.
解决方案
我原来的
<a href="/Test.html?id=1" target="_blank">跳转Target.html</a>
修改后的html
<a href="javascript:;" onclick="window.open('/Test.html?id=1', '_blank')"
跳转Target.html
</a>
主要就是将原来的直接跳转 href
修改为 window.open