Chrome无法调用window.close方法,会报错,提示信息为: Scripts may close only the windows that were opened by it.
在网上搜了各种解决方案,下面的几种都无法解决:
// window.opener=null;
// window.open('','_self');
// window.close();
// open(location, '_self').close();
// open(' ', '_self').close();
// window.location.
// window.close();
// window.opener = window;
// var win = window.open(" ","_self");
// win.close();
<p>................</p>
<p>建议下次可以先去MDN搜索下API的使用方法: https://developer.mozilla.org/zh-CN/docs/Web/API/Window/close</p>
文章里说,close只能关闭用在JS脚本里用open方法打开的窗口。因此下面的代码有效。
var win = window.open("https://www.oschina.net");
win.close();
或者说在窗口A执行代码
window.open("http://example.com")
然后在新创建的example.com窗口执行下面的代码也可以关闭。
window.close()
用 a 标签打开的窗口不属于脚本代码打开,所以不能用 window.close() 关闭。
不清楚你是怎么调用API的,不过这样是可以成功关闭窗口的:https://gitee.com/reter/window-close/blob/master/index.html。
测试的时候不要用浏览器直接打开 html 页面,要使用http服务器。
我这个页面是通过a标签向后端发送请求打开的页面,试了各种方式都无法关闭,就是中间通过过渡方式open一个新的页面然后立即close仍然不行,close方法还是会报错,谷歌浏览器这个就是通不过.
<p>用 a 标签打开的窗口不属于脚本代码打开,所以不能用 window.close() 关闭。 不清楚你是怎么调用API的,不过这样是可以成功关闭窗口的:https://gitee.com/reter/window-close/blob/master/index.html。 测试的时候不要用浏览器直接打开 html 页面,要使用http服务器。</p>
感谢解答,最终也没有办法解决这个问题,正如你上面所说的用 a 标签打开的窗口不属于脚本代码打开,所以不能用 window.close() 关闭。所以将关闭这个功能取消了.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。