JS—觸摸事件

觸摸事件

  1. touchstart事件:當(dāng)手指觸摸屏幕時(shí)候觸發(fā),即使已經(jīng)有一個(gè)手指放在屏幕上也會(huì)觸發(fā)。
  2. touchmove事件:當(dāng)手指在屏幕上滑動(dòng)的時(shí)候連續(xù)地觸發(fā)。在這個(gè)事件發(fā)生期間,調(diào)用preventDefault()事件可以阻止?jié)L動(dòng)。
  3. touchend事件:當(dāng)手指從屏幕上離開的時(shí)候觸發(fā)。
  4. touchcancel事件:當(dāng)系統(tǒng)停止跟蹤觸摸的時(shí)候觸發(fā)。關(guān)于這個(gè)事件的確切出發(fā)時(shí)間,文檔中并沒有具體說(shuō)明,咱們只能去猜測(cè)了。

每個(gè)觸摸事件都包括了三個(gè)觸摸列表:

  1. touches:當(dāng)前屏幕上所有觸摸點(diǎn)的集合列表
  2. targetTouches: 綁定事件的那個(gè)結(jié)點(diǎn)上的觸摸點(diǎn)的集合列表
  3. changedTouches: 觸發(fā)事件時(shí)改變的觸摸點(diǎn)的集合

舉例來(lái)說(shuō),比如div1, div2只有div2綁定了touchstart事件,第一次放下一個(gè)手指在div2上,觸發(fā)了touchstart事件,這個(gè)時(shí)候,三個(gè)集合的內(nèi)容是一樣的,都包含這個(gè)手指的touch,然后,再放下兩個(gè)手指一個(gè)在div1上,一個(gè)在div2上,這個(gè)時(shí)候又會(huì)觸發(fā)事件,但changedTouches里面只包含第二個(gè)第三個(gè)手指的信息,因?yàn)榈谝粋€(gè)沒有發(fā)生變化,而targetTouches包含的是在第一個(gè)手指和第三個(gè)在div2上的手指集合,touches包含屏幕上所有手指的信息,也就是三個(gè)手指。

每個(gè)Touch對(duì)象包含的屬性如下:

{
    screenX: 511, 
    screenY: 400,//觸點(diǎn)相對(duì)于屏幕左邊沿的Y坐標(biāo)
    clientX: 244.37899780273438, //觸摸目標(biāo)在視口中的x坐標(biāo)。
    clientY: 189.3820037841797,//相對(duì)于可視區(qū)域
    pageX: 244.37, 
    pageY: 189.37,//相對(duì)于HTML文檔頂部,當(dāng)頁(yè)面有滾動(dòng)的時(shí)候與clientX=Y 不等
    force: 1,//壓力大小,是從0.0(沒有壓力)到1.0(最大壓力)的浮點(diǎn)數(shù)
    identifier: 1036403715,//一次觸摸動(dòng)作的唯一標(biāo)識(shí)符
    radiusX: 37.565673828125, //能夠包圍用戶和觸摸平面的接觸面的最小橢圓的水平軸(X軸)半徑
    radiusY: 37.565673828125,
    rotationAngle: 0,//它是這樣一個(gè)角度值:由radiusX 和 radiusY 描述的正方向的橢圓,需要通過(guò)順時(shí)針旋轉(zhuǎn)這個(gè)角度值,才能最精確地覆蓋住用戶和觸摸平面的接觸面
    target: {} // 此次觸摸事件的目標(biāo)element
}

identifier
使用 Chrome 的模擬器發(fā)現(xiàn)多次觸摸動(dòng)作,值始終不變。用真機(jī)測(cè)試則不會(huì)有問題(用的safari連接mac調(diào)試可以)。每次觸摸包括start,move,end這整個(gè)過(guò)程,標(biāo)志符都不變。下一次觸摸動(dòng)作開始,標(biāo)志符就會(huì)變化。

screenY clientY
在 safari 中 screenY與clientY值是相等的,在iOS微信中兩個(gè)數(shù)值不等,但單位應(yīng)該也不一樣。

radiusX radiusY rotationAngle
測(cè)試過(guò)程中safari及微信內(nèi)置瀏覽器都不支持這些屬性,chrome模擬器可以。

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 觸屏已經(jīng)是我們身邊電子設(shè)備的常態(tài)了。觸摸事件當(dāng)然也是隨著觸屏的出現(xiàn),用戶使用最多的事件啦!難道使用觸屏事件后,其他...
    Miss____Du閱讀 35,660評(píng)論 4 44
  • dbclick 在頭部加上這個(gè),防止雙擊的時(shí)候?yàn)g覽器放大 觸摸事件 touchstart 當(dāng)手指放在屏幕上觸發(fā)。 ...
    貞貞姐閱讀 638評(píng)論 0 7
  • 13.1 事件流 “DOM2級(jí)事件”規(guī)定事件流包括3個(gè)階段:事件捕獲階段,處于目標(biāo)階段,事件冒泡階段。事件捕獲表示...
    Elevens_regret閱讀 526評(píng)論 0 0
  • 一、四種touch觸摸事件 事件 touchstart手指放在屏幕上時(shí)觸發(fā)。 touchmove手指在屏幕滑動(dòng)時(shí)持...
    婷樓沐熙閱讀 432評(píng)論 0 0
  • 網(wǎng)易云音樂 聽見好時(shí)光 望洞庭 唐·劉禹錫 湖光秋月兩相和, 潭面無(wú)風(fēng)鏡未磨。 遙望洞庭山水翠, 白銀盤里一青螺。...
    滄浪漁歌閱讀 9,596評(píng)論 2 4

友情鏈接更多精彩內(nèi)容