2011-12-02 18 views

cevap

2

Bu sorunla ilgili hata raporlarını incelerken, dokunma olaylarını kullanarak sorunu çözen this JavaScript library buldum. Ayrıca, Honeycomb'da da bildirildiğine göre, bu yüzden düzeltme, Ice Cream Sandwich'in yapımını zorlaştırdığı anda insanları etkileyecek.

3

Android için Chrome için bir başka hızlı düzeltme (http://chris-barr.com/index.php/entry/scrolling_a_overflowauto_element_on_a_touch_screen_device/)

İlk

function isTouchDevice(){ 
    try { 
    document.createEvent("TouchEvent"); 
    return true; 
    } catch(e) { 
    return false; 
    } 
} 

div kaydırılabilir

yapmak işlev ... bir dokunmatik cihaz olup olmadığını kontrol etmek için bir işlev oluşturmak
function touchScroll(id){ 
    if(isTouchDevice()){ //if touch events exist... 
    var el = document.getElementById(id); 
    var scrollStartPos = 0; 

    document.getElementById(id).addEventListener("touchstart", function(event){ 
     scrollStartPos = this.scrollTop + event.touches[0].pageY; 
     event.preventDefault(); 
    }, false); 

    document.getElementById(id).addEventListener("touchmove", function(event){ 
     this.scrollTop = scrollStartPos - event.touches[0].pageY; 
     event.preventDefault(); 
    },false); 
    } 
} 

... node değerini geçen işlevi çağırın

touchScroll("divIdName"); 
2

3.0'dan önceki tüm Android sürümleri taşma ile tetiklenir: scroll veya auto (bug info).

function touchScroll(selector){ 
     var scrollStartPos = 0; 
     $(selector).live('touchstart', function(event) { 
     scrollStartPos = this.scrollTop + event.originalEvent.touches[0].pageY; 
     }); 
     $(selector).live('touchmove', function(event) { 
     this.scrollTop = scrollStartPos - event.originalEvent.touches[0].pageY; 
     }); 
} 

ve sonra modernizr kullanıyorsanız:

if (Modernizr.touch) { 
    touchScroll($('.myScrollableContent')) 
} 

ama öyle değil ideal hepsi dokunmatik mümkün cihazların bu olacak çünkü burada jQuery kullanarak thoses için

çabuk oluyor. Eğer PhoneGap kullanırsanız

sen (PhoneGap inited yere sonra) yapabilirsiniz:; dan `kaydırılabilir içerik içinde çalışmak vb tıklanabilir bağlantılar için

if (window.device && device.platform=="Android" && parseInt(device.version) < 3){ 
    touchScroll($('.myScrollableContent')) 
} 
+2

, sen' event.preventDefault() kaldırmak gerekir "touchstart" etkinliği. – awe

+0

bu doğru! Bunu işaret ettiğin için teşekkürler. Onu cevabımdan alıyorum. –

+0

3.0'dan önceki android sürümlerinde çalışmaz – eversor

İlgili konular