Подтвердить что ты не робот

ScrollTop() возвращает 0 в Firefox, но не в Chrome

Не уверен, есть ли еще один вопрос относительно этого, если так я извиняюсь и, пожалуйста, не выпускайте гончих.

Использование html5 doctype и выполнение быстрого console.log с моего прослушивателя прокрутки, который сообщает мне значение scrollTop(). Я в основном делаю это, поэтому, когда я прокручиваю прошлое, я изменяю непрозрачность элемента. Я делаю это с помощью MVS-решения, и у меня нет возможности подталкивать его к внешнему сайту, чтобы вы могли смотреть. Вот быстрый фрагмент:

var opacity = 1;
var scrollTop = $('body').scrollTop();
if (scrollTop > 200) {
   opacity = 0.1;
}
$('#element).css('opacity', opacity);

Если я прокручиваю в Chrome, я получаю console.log(scrollTop); отображая то, что я хочу (т.е. 100 для каждого прокрутки, которое я делаю), и моя непрозрачность исчезает после того, как я ударил 200 scrollTop. Если я прокручиваю в FF и IE7 +, var возвращает "0" каждую прокрутку. Если я изменю $('body'), scrollTop() на $('document'). ScrollTop(); то я получаю "нулевой" возврат на прокрутке.

Любые идеи? Спасибо!

4b9b3361

Ответ 1

Попробуйте использовать var scrollTop = $(document).scrollTop();

Ответ 2

$(window).scrollTop() работает как в Firefox, так и в Chrome.

Для проверки запустите следующий jsfiddle как в chrome, так и в firefox: http://jsfiddle.net/RBBw5/6/

Ответ 3

После некоторого разочарования IE9 в режиме quirks я обнаружил, что $('body').scrollTop() работает надежно в IE9, Chrome 32 и Firefox 26.

Ответ 4

Использование var scrollTop = $('html').scrollTop(); работает для FireFox

Вам нужно будет обнюхать браузер, хотя (я знаю, обнаружил функцию, а не нюхал, но вы не можете обнаружить это), потому что он не будет работать в Chrome, попробуйте здесь:

Самая простая/самая легкая замена для обнаружения браузера jQuery 1.9?