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

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

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

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

正如您可以看到每个返回值的差异。 我并不太关心FF和IE8之间的区别,但我和IE7以及其他人一样。

是否有我可以使用的另一个function是相同或类似的跨浏览器或可能的解决方案?

您的标记可能存在错误(非交叉浏览器)。 但作为替代方案,您可以尝试使用本机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}; } 

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

我这样解决了:

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

如果元素不存在,切勿执行offset().top