Обнаружение события прокрутки в браузере Android

Я пытаюсь обнаружить событие прокрутки в браузере Android (моя конкретная версия – 2.1, но U хочет, чтобы она работала и в более старых версиях). Это кажется невозможным!

Я сначала попробовал это:

document.addEventListener('scroll', function(){ alert('test'); }, false); 

Но ничего не запускается (кроме случаев загрузки страницы).

Я подумал: хорошо, давайте будем сумасшедшими и подражаем им: 1. Обнаружение касания 2. Опрос окна .pageYOffset, чтобы мы знали, когда окно перестает прокручиваться. 3. Вручную запускайте функцию пользователя, которую я хочу прокрутить.

К сожалению, событие touchhend не похоже на запуск … на самом деле, когда мы не прокручиваем и только коснитесь экрана (touchstart + touchhend), он работает. Как только мы прокручиваем страницу между ними (touchstart + touchmove + touchhend), она разбивает все.

В моем основном базовом примере содержится только следующее:

 document.addEventListener('touchend', function(){ alert('test'); }, false); 

Но предупреждение не появляется, когда мы прокручиваем пальцем и отпускаем прикосновение …

У кого-нибудь есть предложение?

Благодарю.

Вы можете сканировать исходный код для JQuery Mobile, он поддерживает браузеры Android и имеет прослушиватели событий прокрутки.

Или, по крайней мере, они говорят, что это делается в документах. :п

Вот источник

 $.event.special.scrollstart = { enabled: true, setup: function() { var thisObject = this, $this = $( thisObject ), scrolling, timer; function trigger( event, state ) { scrolling = state; var originalType = event.type; event.type = scrolling ? "scrollstart" : "scrollstop"; $.event.handle.call( thisObject, event ); event.type = originalType; } // iPhone triggers scroll after a small delay; use touchmove instead $this.bind( scrollEvent, function( event ) { if ( !$.event.special.scrollstart.enabled ) { return; } if ( !scrolling ) { trigger( event, true ); } clearTimeout( timer ); timer = setTimeout(function() { trigger( event, false ); }, 50 ); }); } };