определить, можно ли прокрутить элемент в HTML-документе - PullRequest
0 голосов
/ 20 декабря 2010

Привет Я пытаюсь проверить, является ли элемент 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, есть ли у элемента несколько полос прокрутки?

1 Ответ

1 голос
/ 21 декабря 2010

Используйте offsetHeight вместо clientHeight, поскольку оно включает в себя границу, поэтому вам не нужно беспокоиться об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...