您好 我正在尝试检查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中确定元素是否有一些滚动条?
答案 0 :(得分:1)
使用offsetHeight
代替clientHeight
,因为它包含边框,所以您无需担心这一点。