Проблема с jQuery(window).scrollTop() в Firefox?

#jquery #firefox

#jquery #firefox

Вопрос:

У меня есть следующий код, который я использую для отображения скрытого нижнего колонтитула при прокрутке вниз после определенной точки на странице.

 jQuery(document).scroll(function(){
    if(jQuery(window).scrollTop() >= jQuery('.foot').offset().top   jQuery('.foot').height() - window.innerHeight) {
        // Add class here
    } else {
        // Remove class here
});
 

Это прекрасно работает в Chrome и IE. Но не работает в Firefox. Я сузил проблему до jQuery(window).scrollTop(). Я создал этот тест http://jsfiddle.net/captainmorgan/cVsRE/1/
Откройте в Chrome и прокрутите вниз с помощью колесика мыши. Я получаю 100. Когда я делаю то же самое в Firefox, я получаю 114, но Firefox продолжает отображать несколько ящиков сообщений, и их число продолжает уменьшаться.
Кто-нибудь знает, почему Firefox делает это?

Ответ №1:

Попробуй:

 jQuery(window).scroll(function(event) {
    var NextScroll = jQuery(this).scrollTop();
    if(NextScroll > (jQuery('.foot').offset().top   jQuery('.foot').height() - window.innerHeight)) {
         //action
    }

});
 

Комментарии:

1. Это по-прежнему не работает в Firefox, так как NextScroll будет начинаться с (например, 114, но его значение будет продолжать уменьшаться, пока не достигнет 0, и в этот момент первая часть оператора if никогда не будет достигнута.

2. Я использую этот код в superkul. нет мобильного устройства. Я думаю, что это работает в Firefox

3. Если вы добавите предупреждение в NextScroll, вы увидите, что Firefox отображает несколько окон сообщений, в результате чего NextScroll все время заканчивается значением 0.

4. При отладке не следует использовать alert. Вы должны использовать console.log (NextScroll).

5. Спасибо за совет. Это по-прежнему не меняет того факта, что либо проблема с Firefox, либо мне нужно кодировать по-другому.