JavaScript页面后退或关闭空值合并运算符

后退方法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,可达到预期效果

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注