移動端touch、click、tap的區別

來源:互聯網
上載者:User

標籤:手機   click   prevent   前端   比較   解決辦法   0ms   區別   read   

一、click 與tap比較

click與tap都會出發點擊事件,但是在手機web端,click會有200-300ms延遲,所以一般用tap(輕擊)代替click作為點擊事件。singleTap 和 doubleTap分別代表單擊和雙擊。

二、使用tap會出現點透事件(事件穿透)

很多用過Zepto(移動端開發的庫)都說使用tap會出現點透事件。

1、什麼是tap事件穿透

執行完上層綁定的tap事件後,下層如果綁定著click事件或者本身就存在點擊事件(a/input)也會預設觸發,這就是點透事件,

2、出現點透事件的原因

首先要知道tap事件是通過監聽綁定document上的touch事件來類比的,並且tap 事件是冒泡到document上才出發的;

touchstart:在這個dom上用手觸摸就能開始

click:在這個dom上用手觸摸,且手指未曾移動,且在這個dom上手指離開螢幕,且觸摸和離開時間很短(有的瀏覽器可能不檢測時間間隔,照樣可以出發click),才開始觸發。

也就是說在移動端的事件觸發從早到晚排序:touchstart touchstop  click。所以click的觸發是有延時的,大約300ms,所以click觸發的原則是,觸發當前有click的元素,且該元素麵朝使用者的最前端,才會觸發click。

3、解決辦法

(1)github上有一個叫做fastclick的庫https://github.com/ftlabs/fastclick

在dom ready時初始化在body上,如:

$(function(){    newFastClick(document.body);})

然後給需要“無延遲點擊”的元素繫結click事件即可。實戰開發中,click響應速度比tap還要快一點。

(2)為元素繫結touchend事件,並在內部加上e.preventDefault();

$A.on(‘touchend‘,function(e){//而touchend是原生的事件,在dom本身上就會被捕獲觸發     $demo.hide()    e.preventDefault(); })

監聽touchend事件,阻止A元素的touchend的預設行為,從而阻止click事件的產生.

三、touch事件

主要有

touchstart事件:當手機觸控螢幕幕時觸發,即使已經有一個手指放在螢幕上也會觸發。

touchmove事件:當手指在螢幕上華東法人時候連續地觸發。在這個事件發生期間,調用preventDefault()事件可以阻止滾動。

touchend事件:當手指從螢幕上離開的時候觸發。

touchcancel事件:當系統停止跟蹤觸摸的觸發。關於這個實際的確切觸發時間。

每個觸摸事件都包括了三個觸摸列表:

1.touches:當前位於螢幕上的所有手指的一個列表。

2.targetTouches:位於當前DOM元素上的手指的一個列表。

3.changedTouches:涉及當前事件的手指的一個列表。

例如,在一個touchend事件中,這就會是移開的手指。

這些列表由包含了觸摸資訊的對象組成:

1.identifier:一個數值,唯一標識觸摸會話(touchsession)中的當前手指。

2.target:DOM元素,是動作所針對的目標。

3.客戶/頁面/螢幕座標:動作在螢幕上發生的位置。

4.半徑座標和rotationAngle:畫出大約相當於手指形狀的橢圓形。

 

---------------------------------------------------

 

移動端touch、click、tap的區別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.