scrollTop () возвращает 0 в Chrome - PullRequest
7 голосов
/ 19 октября 2011

Я хочу проверить, прокручивается ли страница после того, как она закончила загрузку, и я использую этот код:

$(document).ready(function(){   
    alert($(window).scrollTop());
});

Это хорошо работает в Firefox, но всегда возвращает 0 в Chrome.Почему это?

Ответы [ 6 ]

4 голосов
/ 22 февраля 2013

На самом деле Firefox - единственный браузер, который не возвращает 0 для $ (window) .scrollTop () в domReady или window.onload. Chrome, Safari и IE все возвращают 0. Единственный безопасный способ получить правильное положение полосы прокрутки в domReady, как упоминалось в другом ответе выше, установить обработчик события для события прокрутки окна, как показано ниже:

$(document).ready(function(){   
    $(window).scroll(function() {
        console.log($(window).scrollTop());
        $(window).unbind('scroll');
    });
});
2 голосов
/ 31 июля 2015

У меня также была проблема, что scrollTop() всегда возвращал 0 в Chrome, независимо от того, использовал я его на window, document или 'html,body'. Я наконец узнал, что проблема была в css:

html, body {
    height: 100%;
    overflow-x: hidden;
}

На самом деле, я не знаю точно, почему, потому что вы можете удалить части этого кода, и тогда он снова заработает. Странно, но проблема решена;)

2 голосов
/ 22 февраля 2013

Chrome восстанавливает положение прокрутки перед обновлением после загрузки DOM.Таким образом, получение scrollTop для события scroll вместо события ready будет работать.

2 голосов
/ 19 октября 2011

$(window).scrollTop() вернет 0, если окно не прокручивается.

0 голосов
/ 06 сентября 2016

У меня была такая же проблема, но она была исправлена ​​добавлением декларации документа:

<!DOCTYPE html>
0 голосов
/ 19 октября 2011

Попробуйте следующий код на странице с текстом и ссылкой внизу страницы. Не забудьте иметь достаточно текста или пустых строк для прокрутки страницы, пока не увидите кнопку «my»

 $(document).ready(function () {
        alert($(window).scrollTop()); // first load if you did not scroll = 0
        $("#button").click(function () { alert($(window).scrollTop()); }); 
        // hitting the button that is located on bottom of page 
        // - i had to scroll the page = xxx (68 in may case)
    });

В вашем случае нормально получить 0, потому что страница не прокручивается, смещение между вашей позицией и верхом страницы равно 0.

Я пробовал в Chrome, FF6, IE9. Я надеюсь, что я был полезным.

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