您的位置:首页 > Web前端 > JQuery

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

2016-09-08 17:31 776 查看
最近工作上遇到的问题。就是这个  锚点就不多说了,如下解释。主要问题是我在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  chrome jquery html ie 10