Свойство scrollHeight в FireFox - PullRequest
       10

Свойство scrollHeight в FireFox

9 голосов
/ 06 декабря 2010

Я работаю над функцией, чтобы определить, не переполнится ли текст внутри элемента DIV. В связи с этим у меня есть функция, работающая как в Chrome, так и в IE, которая сравнивает scrollHeight элемента с атрибутами clientHeight.

Однако в FireFox оба атрибута (а также offsetHeight) всегда сообщают одно и то же число, которое является высотой элемента div.

Я получаю точные результаты из свойства scrollHeight, если добавлю 'overflow: auto' к стилю div. Но отображение полосы прокрутки не является приемлемым решением для проекта, над которым я работаю.

Есть предложения?

Ответы [ 3 ]

14 голосов
/ 06 декабря 2010

Это задокументированное поведение:

Когда содержимое элемента не генерирует вертикальную полосу прокрутки, тогда его свойство scrollHeight равно свойству clientHeight.

https://developer.mozilla.org/en/DOM/element.scrollHeight


Я знаю, что это не чисто, но не могли бы вы сделать что-то подобное?

e.style.overflow = "scroll";
var scrollHeight = e.scrollHeight;
e.style.overflow = "hidden";

Пользователь не может видеть это, потому что страница перерисовывается только тогда, когда нетВ настоящее время запущен JavaScript.

3 голосов
/ 23 июня 2012

Kartikaya Gupta объясняет поведение Firefox в сообщении в блоге о свойствах scrollWidth / scrollHeight .

Рекомендация по обнаружению переполнения элемента состоит в том, чтобы сделать его прокручиваемым и установить scrollLeft/ scrollTop до 1 временно.Если по крайней мере scrollWidth или scrollHeight сохранит свое значение, элемент будет переполнен.
Чтобы проверка не была видна пользователю, вы можете выполнить проверку в клонированном элементе, который помещен вотрицательная вершина или левая часть области просмотра.

0 голосов
/ 09 мая 2014

В реальной версии Firefox это больше не проблема, потому что свойство scrollHeight работает даже без уловки overflow = "scroll", указанной здесь.Но в некоторых старых версиях это все еще случается так ...

большое спасибо @thejh, твой намек был очень полезен для меня!

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