2016-11-04 2 views
0

Похоже, что в Safari (версия: 9.1) ни jQuery, ни ванильный JavaScript не ловит событие прокрутки.

Моя цель - поймать позицию прокрутки, а если она меньше 50 пикселей, исправьте навигационную панель, добавив класс и в противном случае удалите этот класс.

Фрагмент кода, который я размещал ниже, работает в Chrome, Firefox и IE, но не в Safari.

$(window).on('scroll', function(){ 
    if($(window).scrollTop()>50){ 
     $('.navbar').addClass('nav-fixed'); 
    } 
    else { 
     $('.navbar').removeClass('nav-fixed'); 
    } 
}); 

ответ

0

Я испытываю то же самое здесь, в Safari v. 10.0.1.

window.addEventListener('scroll',function() { 
    // Nothing happens here in Safari. Scroll event is never fired. 
}); 

EDIT: У меня была проблема с моим CSS, которая устранила проблему. У меня было несколько старых вещей для очков привязки прокрутки (которые мне не нужны), которые я забыл удалить из своего CSS. На DIV окружающих мое содержание, я имел

height: 100vh; 

Так что имеет смысл, что событие прокрутки в окне не будет уволен, потому что я бы прокручивая внутри моего DIV вместо этого.