touch事件與click事件區別
兩個事件從名稱上看差別有點大,touch事件用於移動端,click事件專注於電腦端。
但是兩者又有很大的相似之處,都是點選事件,一個是觸屏點選,一個是通過滑鼠點選。
還有讓人迷惑的一點,就是click事件用於移動端觸屏點選同樣有效。
首先看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> div { width:150px; height:100px; background-color:blue; } </style> <script> window.onload = function () { let odiv = document.getElementsByTagName("div")[0]; odiv.onclick = function () { odiv.style.backgroundColor = "red"; } } </script> </head> <body> <div></div> </body> </html>
上述程式碼為div元素註冊click事件處理函式,點選之後將其背景顏色設定為紅色。
程式碼適用於電腦端,但是在移動端依然有效,觸屏點選同樣可以將div背景顏色設定為紅色。
雖然非常相似,兩者的區別也是巨大的,下面分佈進行一下介紹。
一.為什麼click事件可以用於移動端:
最初移動端裝置是無法訪問網頁的,電腦端一統天下,click自然順風順水。
隨著軟硬體的進步,可以在移動端上瀏覽網頁,自然要設計移動端想配套的事件。
由此觸屏相關的事件誕生,但是此時網頁絕大多數都沒有考慮移動端的。
為了相容電腦端的頁面,採取瞭如下兩個措施:
(1).click事件在移動端依然有效,這也保全了已有的功能。
(2).電腦端頁面較大,將其置於螢幕較小的移動裝置之中時,頁面內容在視覺上非常小,必須具有放大鏡一樣的眼睛才能看清楚,為了解決此問題,對click事件進行了一些特殊處理,裝置會檢測兩次連續的click事件之間的間隔,如果間隔小於300ms,那麼就會觸發頁面的放大或者縮小功能,這樣就差強人意的解決了使用者瀏覽頁面的問題;如果兩次點選間隔大於300ms,那麼觸發普通的點選事件,這也就是大家常說的click事件300ms延遲現象。
也可以看到,當前無需糾結於兩者的區別,因為現在都有專門針對移動端設計頁面,所以安心使用移動端配套的事件即可,當然多掌握一點知識沒有任何問題,起碼可以做到心中比較敞亮,對身體健康也是有好處的,^_^。
三.touch事件的優先順序高於click事件:
touch事件的有限級高於click事件,下面通過一段程式碼例項進行一下簡單演示。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #ant { background: red; width: 500px; height: 500px; } </style> <script> window.onload = function () { let odiv = document.getElementById("ant"); odiv.addEventListener("touchstart", function (e) { console.log("touchstart"); }); odiv.addEventListener("touchend", function (e) { console.log("touchend"); }); odiv.onclick = function () { console.log("divclick"); } document.body.onclick = function () { console.log("bodyclick"); } } </script> </head> <body> <div id="ant"></div> </body> </html>
程式碼執行效果截圖如下:
使用preventDefault()可以遮蔽掉click事件,程式碼如下:
[JavaScript] 純文字檢視 複製程式碼odiv.addEventListener("touchstart", function (e) { console.log("touchstart"); e.preventDefault(); });
將其放入touchend事件處理函式也可以產生同樣的效果:
[JavaScript] 純文字檢視 複製程式碼odiv.addEventListener("touchend", function (e) { console.log("touchend"); e.preventDefault(); });
非常簡單,只要記住結論即可,就不再進行截圖演示。
相關文章
- onclick與click事件的區別事件
- android 觸控(Touch)事件、點選(Click)事件的區別(詳細解析)Android事件
- 關於click事件與touch事件衝突的問題事件
- touch事件和click事件多次觸發的問題事件
- JavaScript click 事件JavaScript事件
- jQuery click事件jQuery事件
- 如何解決 touchstart 事件與 click 事件的衝突事件
- input與change事件區別事件
- 安卓觸控事件與單擊事件的區別安卓事件
- React事件與普通HTML事件有什麼區別React事件HTML
- focusin與focus事件的區別事件
- click事件"穿透"問題事件穿透
- iOS GestureRecognizer與UIResponder touch事件響應iOSUI事件
- input事件和change事件區別事件
- loadend 與 load 事件區別事件
- 移動端 touch事件事件
- 移動端touch事件事件
- click事件形成的條件 – Eric事件
- selenium phantomjs click事件JS事件
- HighCharts圖的click事件事件
- 雙擊事件(dblclick)時,不觸發單擊事件(click)事件
- 手持裝置點選響應速度,滑鼠事件與touch事件的那些事事件
- 手機端html5觸屏事件(touch事件)HTML事件
- onclick和onmousedown事件區別事件
- Vue根據條件新增click事件Vue事件
- 事件風暴EventStorming與事件建模EventModeling的區別 | rafalmaciag事件ORMMac
- 【.NET】多執行緒:自動重置事件與手動重置事件的區別執行緒事件
- vue2.0自定義指令,用touch事件替換scroll事件Vue事件
- sencha touch 檢視(view) show與hide事件探討ViewIDE事件
- focusout和blur事件的區別事件
- 移動web開發之touch事件Web事件
- Android Touch事件分發過程Android事件
- cocoa與cocoa Touch區別之分
- javaScript事件(五)事件型別之滑鼠事件JavaScript事件型別
- svg click事件失效(僅限edge瀏覽器)SVG事件瀏覽器
- click事件在蘋果手機失效的問題事件蘋果
- 動態生成的html元素繫結click事件HTML事件
- jQuery中click事件多次觸發解決方案jQuery事件