手機touch事件

touchstart:觸摸開始的時候觸發 android

touchmove:手指在屏幕上滑動的時候觸發瀏覽器

touchend:觸摸結束的時候觸發session

 

而每一個觸摸事件都包括了三個觸摸列表,每一個列表裏包含了對應的一系列觸摸點(用來實現多點觸控):ide

touches:當前位於屏幕上的全部手指的列表。測試

targetTouches:位於當前DOM元素上手指的列表。spa

changedTouches:涉及當前事件手指的列表。code

 

每一個觸摸點由包含了以下觸摸信息(經常使用):事件

identifier:一個數值,惟一標識觸摸會話(touch session)中的當前手指。通常爲從0開始的流水號(android4.1,uc)get

target:DOM元素,是動做所針對的目標。io

pageX/pageX/clientX/clientY/screenX/screenY:一個數值,動做在屏幕上發生的位置(page包含滾動距離,client不包含滾動距離,screen則以屏幕爲基準)。 

radiusX/radiusY/rotationAngle:畫出大約至關於手指形狀的橢圓形,分別爲橢圓形的兩個半徑和旋轉角度。初步測試瀏覽器不支持,好在功能不經常使用,歡迎你們反饋。

 

//touchstart事件  
 
function touchSatrtFunc(e) { 
    //evt.preventDefault(); //阻止觸摸時瀏覽器的縮放、滾動條滾動等  
    var touch = e.touches[0]; //獲取第一個觸點  
    var x = Number(touch.pageX); //頁面觸點X座標  
    var y = Number(touch.pageY); //頁面觸點Y座標  
 
    //記錄觸點初始位置  
    startX = x;  
    startY = y;  
}  
//touchmove事件 
 
function touchMoveFunc(e) {  
    //evt.preventDefault(); //阻止觸摸時瀏覽器的縮放、滾動條滾動等  
 
    var touch = evt.touches[0]; //獲取第一個觸點  
    var x = Number(touch.pageX); //頁面觸點X座標  
    var y = Number(touch.pageY); //頁面觸點Y座標  
    var text = 'TouchMove事件觸發:(' + x + ', ' + y + ')';  
 
    //判斷滑動方向  
    if (x - startX != 0) {  
        //左右滑動  
    }  
    if (y - startY != 0) {  
        //上下滑動  
    }  
}  

  

var  obj = document.getElementByIdx_x_x( 'id' );
obj.addEventListener( 'touchmove' function (event) {
      // 若是這個元素的位置內只有一個手指的話
     if  (event.targetTouches.length == 1) {
     event.preventDefault(); // 阻止瀏覽器默認事件,重要 
         var  touch = event.targetTouches[0];
         // 把元素放在手指所在的位置
         obj.style.left = touch.pageX-50 +  'px' ;
         obj.style.top = touch.pageY-50 +  'px' ;
         }
},  false );
相關文章
相關標籤/搜索