Как получить положение прокрутки документа?


Как получить значение положения прокрутки документа?

9 82

9 ответов:

$(document).height() //returns window height

$(document).scrollTop() //returns scroll position from top of document

вот как получить scrollHeight элемента, полученного с помощью селектора jQuery:

$(selector)[0].scrollHeight

если selector - это идентификатор элемента (например,elemId), гарантируется, что 0-индексированный элемент массива будет элементом, который вы хотите выбрать, и scrollHeight будет правильно.

Если вы используете Jquery 1.6 или выше, используйте prop для доступа к значению.

$(document).prop('scrollHeight')

предыдущие версии использовались для получения значения из attr, но не post 1.6.

document.getElementById("elementID").scrollHeight

$("elementID").scrollHeight

он использует элементы HTML DOM, но не селектор jQuery. Он может быть использован как:

var height = document.body.scrollHeight;

что-то вроде это должно решить вашу проблему:

$.getDocHeight = function(){
     var D = document;
     return Math.max(Math.max(D.body.scrollHeight,    D.documentElement.scrollHeight), Math.max(D.body.offsetHeight, D.documentElement.offsetHeight), Math.max(D.body.clientHeight, D.documentElement.clientHeight));
};

alert( $.getDocHeight() );

Ps: вызывайте эту функцию каждый раз, когда вам это нужно, предупреждение предназначено для тестирования..

чтобы получить фактическую высоту прокрутки областей, прокручиваемых полосой прокрутки окна, я использовал $('body').prop('scrollHeight'). Это, кажется, самое простое рабочее решение, но я не проверял широко на совместимость. Эмануэле Дель Гранде отмечает еще одно решение, которое, вероятно, не будет работать для IE ниже 8.

большинство других решений работает для прокрутки элементов, но это работает для всего окна. Примечательно, что у меня была та же проблема, что и у Майкла для решения Анкита, а именно: $(document).prop('scrollHeight') возвращается undefined.

попробуйте это:

var scrollHeight = $(scrollable)[0] == document ? document.body.scrollHeight : $(scrollable)[0].scrollHeight;

вы можете попробовать это, например, этот код помещает полосу прокрутки внизу для всех тегов DIV

помните: jQuery может принимать функцию вместо значения в качестве аргумента. "this" - это объект, обрабатываемый jQuery, функция возвращает свойство scrollHeight текущего DIV" this " и делает это для всех DIV в документе.

$("div").scrollTop(function(){return this.scrollHeight})