日期:2014-05-16  浏览次数:20533 次

javascript 判断 history.back() 起作用了没

由于history.back() 没有返回值,我们很难 知道  我们的 这句话执行了还是没执行,但是 他的执行与否 又影响 我们的 后面的要执行的一些代码,

此文 通过 另外一条路 来达到   判断history.back() 起没起作用的效果。
我们可以知道 history还有一个 成员变量 就是length,他有一个初值,
(不了解请去 w3cschool 看看, )
如果你的 超链接 是 新建一个窗口打开 的链接,那么这个值是不会增加的,同样的 浏览器的自带的 前进,后退也是不管用的,所以我们可以 通过判断 length的 现在 值 是否大于他的初值 来判断 现在 的页面 能不能后退 ,即history.back()能不能起作用;
下面是 几种常见主流 浏览器  的 length 的初值;
ie   0
firefox 1 (包括 firefox ,google)
opear   0
其他的浏览器  没有细看,
下面的代码  是 如果  history.back()  不起作用 ,就链接到 调用该javascript 的所传参数的地址



function   back(myurl){     //   该函数处理二级界面 详细内容显示 右下角的  返回 按钮,现在仅能正确处理ie,firefox,opera,浏览器
var   backUrl=myurl;
var  flag=false;        
if ((navigator.userAgent.indexOf('MSIE') >= 0) && (navigator.userAgent.indexOf('Opera') < 0))// 你是使用IE
{
//alert('你是使用IE')
if(history.length>0){
flag=true;
history.back();
}
}
else  
{
    if (navigator.userAgent.indexOf('Firefox') >= 0)   //你是使用Firefox
    {
    //alert('你是使用Firefox');
    if(window.history.length>1)
    {
    flag=true;
    history.back();
    }
    }
    else
    {
    if (navigator.userAgent.indexOf('Opera') >= 0)    //你是使用Opera
    {
    //alert('你是使用Opera')
    if(history.length>0)
    {
    flag=true;
    history.back();
    }
   
    }
    else                      //你是使用其他的浏览器浏览网页
    {
    //alert('你是使用其他的浏览器浏览网页!')
    }
    }
}

if(flag==false)              //   
{
window.location.href =backUrl;
}
}