[Html JS] jQuery锚点跳转及相关操作 IE10 11 下兼容性问题

本文介绍了一种针对Internet Explorer 10和11浏览器中锚点失效问题的解决方案。通过判断浏览器版本,并在页面加载完成后手动调整滚动条位置,确保锚点功能正常工作。

最近工作上遇到的问题。就是这个  锚点就不多说了,如下解释。主要问题是我在chrome,火狐,ie8下都ok的。NTC测试,报了个bug,说IE10.11就不行了。
这里写图片描述
主要是这个页面分三个frame,我试了下一些常规的办法就不work。

思路:在加载页面,比如help这个页面。判断如果是IE10.11则,在页面初始化后再加载一个函数。这个函数在根据url的锚点在跳转到相应位置。
因为在初始化时候页面的url链接已经处理了。类似http://192.168.1.1/help.htm#LEDID

function set_help_idForIE1011() {
    var tmp = checkIEVersion();//获取IE版本信息
    if(tmp >= 10)
    {
        var url = window.location.toString();//获取当前页面的url http://192.168.1.1/help.htm#LEDID
        var id = url.split("#")[1];//得到LEDID
        if (id) 
        {
            var t = $("#" + id).offset().top;
            $(window).scrollTop(t);//跳转到LEDID处
        }
    }

}

IE版本如何获取,看这里:
[Html JS] 判断IE的版本
这样就解决IE10.11下锚点失效的问题。



锚点
html 锚点 到底是干吗的?
通俗简单地说,比如一篇很长的文章,你想按分段精确来看,那就可以用到锚点了。
代码:

<a href="#001">跳到001</a>
...文字省略
<a name="001" id="001" ></a>
...文字省略

其实锚点只需name就可以可,加id是为了让它兼容性更好.
href的值要跟name \ i d 一致,前面必须加”#”,以上代码在ie6/7,ff中都可以兼容,但在ie8中就不行。
因为我们锚点的值为空,为不影响美观我们加个空格就行了,

如以下代码,就可以兼容ie8
<a href="#001">跳到001</a>
...文字省略
<a name="001" id="001" > </a>
...文字省略

另一问题,想显示某页面(如:123.html)的某锚点内容呢?

代码如下
<a href="123.html#001">跳到001</a>
...文字省略
<a name="001" id="001" > </a>
...文字省略

来自


//For IE 10.11 Help content location problem  start add by leo
var IEVersion;
function check_browser_version() {
    var Sys = {};
    var ua = navigator.userAgent.toLowerCase();
    var s;
    (s = ua.match(/rv:([\d.]+)\) like gecko/)) ? Sys.ie = s[1] :
    (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
    (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
    (s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
    (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
    (s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;

    if (Sys.ie)
    {
        //document.write('IE: ' + Sys.ie);
        IEVersion =parseInt(Sys.ie);
        //alert(IEVersion);
    }
    else
    {
        IEVersion = -1; //-1 is not ie browser
    }

/*  
    if (Sys.firefox) 
    {
        //document.write('Firefox: ' + Sys.firefox);
    }
    if (Sys.chrome) 
    {
        //document.write('Chrome: ' + Sys.chrome);
    }
    if (Sys.opera) 
    {
        //document.write('Opera: ' + Sys.opera);
    }
    if (Sys.safari) 
    {
        //document.write('Safari: ' + Sys.safari);
    }
*/
    return IEVersion;
}


/*
this function just set help page content location for ie10,11. 
it only works in browser IE 10,11  
*/
function set_help_idForIE1011() {
    //var tmp = checkIEVersion(); 
    var tmp = check_browser_version(); 
    //alert(tmp);
    if(tmp >= 10)
    {
        var url = window.location.toString();
        //alert(url);
        var id = url.split("#")[1];
        //alert(id);
        if (id) 
        {
            var t = $("#" + id).offset().top;
            $(window).scrollTop(t);
        }
    }
}
//For IE 10.11 Help content location problem  end 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值