有没有办法让Firefox和Chrome滚动相同的元素?

时间:2015-04-21 01:52:00

标签: javascript css html5

我需要获得一个关于canvas元素相对于文档(而不是视口)的物理位置的引用。我的问题是,Chrome document.body.scrollTop会返回正确的滚动位置,而FireFox document.documentElement.scrollTop会返回正确的位置。很明显,Firefox只是使用不同的元素来计算滚动位置,但这真的很痛苦。

这似乎是一个常见的问题。有谁知道是否有办法强制兼容CSS规则?比如,强制滚动发生在身体或html元素上?我尝试过各种方式设置overflow属性,但似乎并没有这样做。

我对JavaScript解决方案持开放态度,但我试图避免"如果firefox使用此值,否则如果chrome使用此值。" CSS会更好。

谢谢!

1 个答案:

答案 0 :(得分:0)

你可以简单地说:

document.documentElement.scrollTop || document.body.scrollTop

在Chrome中,第一个表达式始终返回0,然后采用第二个部分。

但是,在Firefox中,如果第一个表达式返回0(页面顶部),则第二个表达式也会返回0

此解决方案也适用于其他主流浏览器。