使用offset()jquery函数跨浏览器问题

时间:2010-12-02 11:52:56

标签: javascript jquery internet-explorer-7 cross-browser offset

我在jQuery中遇到了offset()函数的跨浏览器问题。例如,我正在寻找锚标记的偏移量

例如。 $('#anchorid').offset().top

  • 在Firefox 3.6 = 205
  • 在IE8 = 204
  • 在IE7 = 553

您可以看到每个返回值的差异。我并不太关心FF& IE8,但我和IE7以及其他人一起使用。

我可以使用的其他功能是相同或类似的跨浏览器或可能的解决方案吗?

2 个答案:

答案 0 :(得分:10)

您的标记可能存在错误(非交叉浏览器)。但作为替代方案,您可以尝试使用原生javascript。

document.getElementById('anchorid').offsetTop

如果你想在整个页面上获得偏移量,你可以使用如下函数:

function findTotalOffset(obj) {
  var ol = ot = 0;
  if (obj.offsetParent) {
    do {
      ol += obj.offsetLeft;
      ot += obj.offsetTop;
    }while (obj = obj.offsetParent);
  }
  return {left : ol, top : ot};
}

答案 1 :(得分:0)

当我的脚本加载到我们想要获取offset().top的元素的页面上时,我在IE8中遇到此问题。

我解决了这个问题:

if ($('#element').length){
    $('#element').offset().top // ...
}

如果元素不存在,请不要执行offset().top