JavaScript页面后退或关闭

来源:互联网 发布:sql full join的用法 编辑:程序博客网 时间:2024/06/06 00:02

后退方法history.go(-1)如果无法后退时,会返回一个undefined,利用这一点来判断是否可以后退,不能后退时执行window.close();

if (!history.go(-1)) {    window.close();}

window.close();对于火狐浏览器经常会无法关闭。因为火狐浏览器只能关闭通过JS新建的窗口,即有target="_blank"属性的<a>标签,或者window.open("","_blank")方式打开的页面。
对此通常采用跳转到about:blank空白页面来实现关闭。

兼容性后退或关闭

if (!history.go(-1)) {    if (getBrowserType() == "Firefox") {        window.open("about:blank","_self").close();    } else {        window.close();    }}

window.open("about:blank","_self").close();用来处理火狐浏览器跳转空白页,及在页面使用JS代码打开的情况下做到关闭页面。

另附getBrowserType()方法
详见 使用userAgent区分浏览器版本

//判断浏览器类型function getBrowserType() {    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串    if (userAgent.indexOf("Firefox") > -1) {        return "Firefox";    } else if (userAgent.indexOf("Edge") > -1) {        return "Edge";    } else if (userAgent.indexOf("Opera") > -1 || userAgent.indexOf("OPR") > -1) {        return "Opera";    } else if (userAgent.indexOf("Chrome") > -1) {        return "Chrome";    } else if (userAgent.indexOf("Safari") > -1) {        return "Safari";    } else if (userAgent.indexOf("MSIE") > -1 || userAgent.indexOf("Trident") > -1) {        return "IE";    }}

代码测试于Firefox 54,Chrome 59,Edge 15,Opera 46,Safari 534,IE 11,可达到预期效果