今天需要做一个功能,倒计时5s关闭页面,或者直接点击按钮直接关闭页面。开始以为是一个很简单的功能,做的时候还是遇到问题了。
1.1 关闭页面的方法
问题是这样的:开始用的 window.close()方法关闭页面,在IE中测试没有问题。 到了谷歌发现页面并没有关闭,F12打开提示:Scripts may closed only the windows that were opened by it. 大致意思:脚本不能关闭非脚本打开的页面。 后来找到一个折中的办法: 将当期的页面指向blank来替代关闭。 IE下仍可以正常关闭。
上代码:

1 var time = 5; 2 3 $(function () { 4 $('#CancelLogin').click(function () { 5 closePage(); 6 }); 7 8 //5s倒计时 9 var watchId = setInterval(function () { 10 time--; 11 if (time <= 0) { 12 closePage(); 13 } 14 $('#msg').text(time + '秒后退出'); 15 }, 1000); 16 17 }); 18 }); 19 20 function closePage() { 21 // FF中需要修改配置window.close方法才能有作用,为了不需要用户去手动修改,所以用一个空白页面显示并且让后退按钮失效 22 // Opera浏览器旧版本(小于等于12.16版本)内核是Presto,window.close方法有作用,但页面不是关闭只是跳转到空白页面,后退按钮有效,也需要特殊处理 23 var userAgent = navigator.userAgent; 24 if (userAgent.indexOf("Firefox") != -1 || userAgent.indexOf("Presto") != -1 || userAgent.indexOf("Chrome") != -1) { 25 document.title = "about:blank"; 26 setTimeout(function () { 27 window.location.replace("about:blank"); 28 }, 100); 29 } else { 30 window.opener = null; 31 window.open("", "_self"); 32 window.close(); 33 } 34 }