2010-09-27 31 views
5

Android tarayıcısında kaydırma olayını tespit etmeye çalışıyorum (kendi sürümüm 2.1, ancak eski sürümlerde de çalışmasını istiyorum). Bu imkansız görünüyor!Android tarayıcıda kaydırma olayını tespit edin

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

Ama hiçbir şey tetiklenir (zaman sayfa yükleme hariç):

Öncelikle bu çalıştı.

düşündüm: iyi, en deli olalım ve bunu taklit: 1. Tespit window.pageYOffset yüzden pencere 3. kaydırma durduğunda Elle ben Tomardaki istediğiniz bir kullanıcı fonksiyonu tetiklemek biliyorum 2. Çağırma'ya touchEnd .

Maalesef, touchend olayı tetiklenecek gibi görünmüyor ... aslında, kaydırma yapmadıkça ve sadece ekrana dokunulduğunda (touchstart + touchend), çalışır. Sayfayı arasında gezinirken (touchstart + touchmove + touchend), her şeyi bozar.

Şimdi benim en temel örneği yalnızca bu içerir:

mu ...

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

Ama biz parmağıyla kaydırma ve dokunma bıraktığınızda uyarı görünmüyor kimse bir önerisi var ?

Teşekkürler.

cevap

2

JQuery Mobile kaynağını taramak isteyebilirsiniz, android tarayıcıları destekler ve kaydırma olay dinleyicilerine sahiptir.

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); 
      }); 
     } 
}; 
İlgili konular