2012-03-21 11 views
6

मैं डिफ़ॉल्ट को रोकने के बिना कैसे स्क्रॉल रोकने करते रोकने, क्योंकि मैं अभी भी touchmove घटना संसाधित करने के लिए करना चाहते हैं:html5 कैनवास touchmove घटना के दौरान स्क्रॉल

<!DOCTYPE html> 
    <html> 
    <head> 
     <script src="jquery.min.js"></script> 
    </head> 
    <body> 
    <canvas id="myCanvas" width="1600px" height="1600px" style="border:1px dashed gray;background-color:white;"> 
    </canvas> 

    <script> 

    function brushStart() { 
     $('#myCanvas').css('background-color','blue'); 
    } 
    function brushEnd() { 
     $('#myCanvas').css('background-color','red'); 
    } 
    function brushMove() { 
     $('#myCanvas').css('background-color','yellow'); 
    } 

    $('#myCanvas').bind('mousedown', brushStart); 
    $('#myCanvas').bind('mouseup', brushEnd); 
    $('#myCanvas').bind('mousemove', brushMove); 
    $('#myCanvas')[0].addEventListener('touchstart',brushStart,false); 
    $('#myCanvas')[0].addEventListener('touchend',brushEnd,false); 
    $('#myCanvas')[0].addEventListener('touchmove',brushMove,false); 

    </script> 

    </body> 
    </html> 

उत्तर

5

जब आप कहते हैं कि आप चाहते हैं पर कार्रवाई होने - यह अभी भी कर सकते हैं हो। बस इसे इस प्रकार लिख:

$('#myCanvas')[0].addEventListener('touchmove', function(e) { 
    e.preventDefault(); 
    brushMove(); 
},false); 

मुझे लगता है कि preventDefault गारंटी नहीं है अकेले स्क्रॉल बंद हो जाएगा, लेकिन यह कैसे आप इसे लिखते हैं तो आप डिफ़ॉल्ट रोकने के लिए और भी अपने स्वयं के विधि करने के लिए यह चाहता था। आप कॉल को ब्रशमोव में भी डाल सकते हैं।

मुझे सिर्फ इतना कहना है कि आप शायद जरूरत touchStart में preventDefault और नहीं touchMove कर रही करने के लिए करते हैं। touchMove वास्तव में बहुत देर हो सकती है, क्योंकि अगर यह स्क्रॉल हो रहा है तो touchMove घटनाएं हो सकती हैं!