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

时间:2010-12-20 14:51:38

标签: javascript dom

您好 我正在尝试检查html元素是否可滚动。只需要gecko支持(并且webkit支持很好但不是必需的)。 文档说明当元素没有垂直滚动条https://developer.mozilla.org/en/DOM/element.scrollHeight时,scrollHeight和clientHeight是相同的 但我发现gecko为scrollHeight增加了边距大小。因此,对于具有边距的元素,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中确定元素是否有一些滚动条?

1 个答案:

答案 0 :(得分:1)

使用offsetHeight代替clientHeight,因为它包含边框,所以您无需担心这一点。