2010-09-27 4 views
5

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

Я первый попытался это:

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

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

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

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

Теперь мой самый простой пример содержит только это:

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

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

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

Спасибо.

ответ

2

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

Or at least they say it does in the docs. :p

Here's the source

$.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); 
      }); 
     } 
}; 
Смежные вопросы