Javascript 确定元素在html文档中是否可滚动

Javascript 确定元素在html文档中是否可滚动,javascript,dom,Javascript,Dom,嗨 我正在尝试检查html元素是否可滚动。只需要gecko支持(webkit支持很好,但不是必需的)。 文档说明当元素没有垂直滚动条时,scrollHeight和clientHeight是相同的 但我发现壁虎增加了卷轴高度的边距。因此,对于有边距的元素,scrollHeight优于clientHeight。 https://bugzilla.mozilla.org/show_bug.cgi?id=576976#c2 因此,我使用了类似于: var clientHeight = element.c

嗨 我正在尝试检查html元素是否可滚动。只需要gecko支持(webkit支持很好,但不是必需的)。 文档说明当元素没有垂直滚动条时,scrollHeight和clientHeight是相同的 但我发现壁虎增加了卷轴高度的边距。因此,对于有边距的元素,scrollHeight优于clientHeight。 https://bugzilla.mozilla.org/show_bug.cgi?id=576976#c2

因此,我使用了类似于:

var clientHeight = element.clientHeight;
var borderTop = window.getComputedStyle(element,null).getPropertyValue('border-top-width');
var borderBottom = window.getComputedStyle(element,null).getPropertyValue('border-bottom-width');
var scrollHeight = element.scrollHeight - parseInt(borderTop, 10) - parseInt(borderBottom, 10);
它工作得很好,除了一种情况:当我使用firefox zoom时。 假设元素周围有一个1px的边框。clientHeight和scrollHeight的差值为2px(1表示顶部,1表示底部)。但不幸的是,当用户缩放页面时,window.getComputedStyle(element,null).getPropertyValue('border-bottom-width')将小于1px


那么,在firefox中是否有可靠的方法来确定某个元素是否有滚动条呢?

使用
offsetHeight
而不是
clientHeight
,因为它包括边框,所以你不必担心这个问题