在尝试确定DOM元素相对于页面顶部(无论在视口内还是视口外)的位置时遇到问题。
现在,在 Firefox 中,这非常简单,只需执行以下操作:
jQuery(element).offset().top
但是,在 Chrome 中,该表达式返回元素相对于视口的位置,当我上下滚动页面时,该位置会改变。在这种情况下,我可以改为通过以下方式计算所需的值:
jQuery(element).offset().top + document.body.scrollTop
当然,困难在于,不同版本的Chrome可能处理不同的问题,更不用说我什至无法测试的其他浏览器了!是否有跨浏览器的简单解决方案来找到该值?似乎很容易做。
修改
正如有人有用地指出的那样,“这应该是相同的,这就是jQuery的重点。”我在其他网站上进行了测试,事实就是如此。不知何故,我的网站由于某种原因被抛弃了。可能是什么原因的任何线索?
答案 0 :(得分:1)
找到了!事实证明,有一个奇怪的CSS规则可以达到这种效果:
html, body {
overflow-y: scroll;
}
那是在一个滚动窗口(但是以某种方式隐藏在视图中)内创建一个滚动窗口,这意味着,即使我向下滚动通过内部的“主体”窗口,我的视口实际上并没有移动。当意识到window.pageYOffset
始终返回0时,我意识到了这一点。