7

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

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

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

如您所见,每个返回值的差异。我不太关心 FF 和 IE8 之间的区别,但我更关心 IE7 和其他。

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

4

2 回答 2

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};
}
于 2010-12-02T13:32:14.810 回答
0

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

我是这样解决的:

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

offset().top如果元素不存在,则永远不要执行。

于 2013-08-31T13:24:52.000 回答