由于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;
}
}