Привет
Я пытаюсь проверить, является ли элемент html прокручиваемым. Необходима только поддержка gecko (и поддержка webkit была бы хорошей, но не обязательной).
Документация говорит, что scrollHeight и clientHeight одинаковы, когда элемент не имеет вертикальной полосы прокрутки https://developer.mozilla.org/en/DOM/element.scrollHeight
Но я обнаружил, что геккон добавляет размер поля к 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 будут иметь разницу в 2 пикселя (1 для верхней части, 1 для нижней части). Но, к сожалению, при увеличении масштаба страницы window.getComputedStyle (element, null) .getPropertyValue ('border-bottom-width') будет меньше 1 пикселя.
Итак, есть ли надежный способ определить в Firefox, есть ли у элемента несколько полос прокрутки?