关于window.close()不能关闭的问题解决
问题:我最近看一个视频做一个很简单的贪吃蛇小游戏,我增加一些用户体验辅助功能,但是我发现我使用window,close()时,不起作用,并且查看控制台时发现有“Scripts may close only the windows that were opened by it.”警告,明白window,close()在老的ie浏览器起作用,在谷歌和搜狐浏览器都不起作用,很多人都避免使用它。于是我找了很多解决方法,最后每一种方法效果不一样,先总结如下:
解决方法一:针对chrome浏览器,可以在编写如下代码,使之生效:(借鉴其他大佬的,我没用谷歌浏览器试,感觉可以,用2345浏览器试了这个代码,老是报错,然后不起作用)。
window.open("about:blank","_self").close()
或者
window.open("","_self").close()
解决方法二:针对firefox:(借鉴其他大佬的,没用这个浏览器试过,也没试,不知道能不能行)
firefox配置:地址栏输入about:config,修改属性“dom.allow_scripts_to_close_windows”为true;
解决方法三:使用以下代码函数退出(这段代码我最初试的时候,发现不行,原因:我由另外一个网页点击按钮链接到这个界面的,这个时候,这代代码好像无法启到退出的作用。当我单独运行那个退出网页,然后点击“退出”按钮时,可以实现退出作用,该代码还有个优势就是有提示,对用户体验好 )。
function Close(){
if(confirm("确定要退出吗?")){
var browsername=navigator.appName;
if (browsername=="Netscape"){
window.open('', '_self', '');
window.close();
}
if (browsername=="Microsoft Internet Explorer") {
window.parent.opener = "whocares";
window.parent.close();
}
}
}
解决方案四:以下代码也可以实现,但是缺点和上面代码一样,经过网页挑战还是不起作用,无法理解请自己试一下。
function Close() {
try {
window.opener = window;
var w = window.open("","_self");
w.close();
//frame的时候
top.close();
} catch (e) {
}
}
解决方法五:借鉴大佬的代码...以下代码可以解决上面2种方法的缺点,不过我试的时候,发现退出的界面是空白页,并不是真正的关闭。目前对于我那个项目,这个方法稍微好一点。
function Close(){
if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Chrome") !=-1) {
window.location.href="about:blank";
window.close();
} else {
window.opener = null;
window.open("", "_self");
window.close();
}
}
注意:以上方法我测试时,没用很多浏览器测试过,所以不能确保一定有用。emmm以后还是尽量避免这种现象出现,其实还有一种解决思路,就是设置一个函数,将关闭按钮跳转到该网站主页中,嘿嘿,不写了,不过我觉得可行。
上一篇: 内存参数终极优化之SDRAM篇
下一篇: 内存升级面面谈
推荐阅读
-
关于JS数组去重的问题解决
-
PE打开软件出错怎么办?如何解决自动关闭不能打开的情况
-
关于CentOS 7下sqlite3找不到的问题解决
-
分享Android平板电脑上开发应用程序不能全屏显示的问题解决
-
Android关于WebView中无法定位的问题解决
-
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
-
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
-
关于博客园开放API的授权问题解决
-
cad图层不能关闭该怎么办? cad关闭图层的详细教程
-
window.close(); 关闭浏览器窗口js代码的总结介绍