2015-03-18 4 views
2

Вот ключевой вопрос: Как получить точный сдвиг верхней части элемента (в данном случае текстовых полей) при наличии полос прокрутки? Предпочтительно все в javascript.получить высоту содержимого документа, включая полосы прокрутки javascript

У меня есть страница, которая переполнит высоту окна браузера, что означает, что будут полосы прокрутки. У меня есть текстовые поля на всей странице с связанными событиями onblur. Onblur будет проверять значение textobx. Если данные недействительны. Если нет, то он/должен будет перемещать речевой пузырь прямо поверх текстового поля с сообщением об ошибке. element.offsettop, похоже, не учитывает любые полосы прокрутки, которые могут присутствовать на странице.

спасибо! Пожалуйста, дайте мне знать, если вы не понимаете, о чем я прошу.

Edit:

Может кто-то поможет мне найти высоту содержимого документа. Не высота окна, а высота содержимого документа, поэтому он также будет содержать высоту с полосами прокрутки? Благодаря!

+0

Когда вы говорите «все в JavaScript» вы имеете в виду Javascript чисто, или является Java-рамки, такие как JQuery допустима? –

+0

Я хотел бы ответить в чистом javascript – www139

+0

_ «Может кто-нибудь помочь мне найти высоту содержания документа» _ - http://stackoverflow.com/search?q=javascript+document+height – CBroe

ответ

6

Размеры документов - это кошмар совместимости с браузером, потому что, хотя все браузеры выставляют свойства clientHeight и scrollHeight, они не все согласны с тем, как вычисляются значения.

Раньше была сложная формула лучшей практики для того, как вы протестировали правильную высоту/ширину. Это связано с использованием свойств document.documentElement, если они доступны или возвращаются к свойствам документа и т. Д.

Самый простой способ получить правильную высоту - получить все значения высоты, найденные в документе, или documentElement, и использовать самый высокий. Это в основном то, что делает Jquery:

var body = document.body, 
    html = document.documentElement; 

var height = Math.max(body.scrollHeight, body.offsetHeight, 
         html.clientHeight, html.scrollHeight, html.offsetHeight); 
+0

okey. Спасибо. Я думаю, что видел этот код где-то в другом месте, но теперь я знаю, что он делает. Еще один вопрос: элемент element.offsetTop учитывает полосы прокрутки, которые могут присутствовать? Благодарю. Вы были очень полезны. Я продолжу делать рытье, чтобы узнать, могу ли я узнать больше ... – www139

Смежные вопросы