js页面回退,无法回退时(history.go(-1))关闭网页

JavaScript 前端客 5360℃ 0评论

做一个手机web项目时,需要点击回退按钮执行window.history.go(-1)回退,但是对于新窗口打开的页面,由于新窗口无历史纪录,无法回退,需要直接关闭当前页以退到上一页(iphone自带的浏览器就有这个问题,qq浏览器等不会新窗口打开,无此问题)。

网上找了下正好有人解决了这个需求,直接拿来用了。

当页面没有前驱历史记录时(就是当前为新弹出的页面,没法做goback操作即history.go(-1)),点击返回按钮时直接关闭页面,否则就退回到前一页。
遇到的问题就是如何判断 是否有history可以回退,这个非常麻烦,因为没有这样的函数直接能获取到,只能通过history.length这个变量做变通的处理,但是对于IE,和非IE的length的返回值不同,IE: history.length=0, 非IE的为1,因此写了一个函数实现前面所需求的这个功能。

/**
 * 返回前一页(或关闭本页面)
 * 如果没有前一页历史,则直接关闭当前页面
 */
function goBack(){
    if ((navigator.userAgent.indexOf('MSIE') >= 0) && (navigator.userAgent.indexOf('Opera') < 0)){ // IE
        if(history.length > 0){
            window.history.go( -1 );
        }else{
            window.opener=null;window.close();
        }
    }else{ //非IE浏览器
        if (navigator.userAgent.indexOf('Firefox') >= 0 ||
            navigator.userAgent.indexOf('Opera') >= 0 ||
            navigator.userAgent.indexOf('Safari') >= 0 ||
            navigator.userAgent.indexOf('Chrome') >= 0 ||
            navigator.userAgent.indexOf('WebKit') >= 0){

            if(window.history.length > 1){
                window.history.go( -1 );
            }else{
                window.opener=null;window.close();
            }
        }else{ //未知的浏览器
            window.history.go( -1 );
        }
    }
}

代码转载地址:http://blog.csdn.net/hzbigdog/article/details/38402239

喜欢 (1)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)