javascript移動(dòng)開(kāi)發(fā)中touch觸摸事件詳解
事件對(duì)象是用來(lái)記錄一些事件發(fā)生時(shí)的相關(guān)信息的對(duì)象。事件對(duì)象只有事件發(fā)生時(shí)才會(huì)產(chǎn)生,并且只能是事件處理函數(shù)內(nèi)部訪問(wèn),在所有事件處理函數(shù)運(yùn)行結(jié)束后,事件對(duì)象就被銷(xiāo)毀!
- W3C DOM把事件對(duì)象作為事件處理函數(shù)的第一個(gè)參數(shù)傳入進(jìn)去
- IE將事件對(duì)象作為window對(duì)象的一個(gè)屬性(相當(dāng)于全局變量)
originalEvent對(duì)象
在一次偶然的使用中,我發(fā)現(xiàn)當(dāng)使用on()函數(shù)并且傳入第二個(gè)選擇器參數(shù)時(shí),e.touches[0]的訪問(wèn)為undefined,打印e發(fā)現(xiàn),它的事件對(duì)象不是原生的事件對(duì)象。經(jīng)查閱發(fā)現(xiàn)它是jquery事件對(duì)象。
$(window).on("touchstart","body",function(e){
console.log(e)
})

上面例子中event中有一個(gè)originalEvent屬性,而這才是真正的touch事件。jQuery.Event 是一個(gè)構(gòu)造函數(shù),其創(chuàng)建一個(gè)可讀寫(xiě)的jQuery事件對(duì)象,并在event 對(duì)象保留了對(duì)這個(gè)原生事件對(duì)象 event 的引用($event.originalEvent)。我們綁定的事件處理程序所處理的事件對(duì)象都是 $event。該方法也可以傳遞一個(gè)自定義事件的類(lèi)型名,用于生成用戶自定義事件對(duì)象。
touch事件
touchmove: 當(dāng)手指在屏幕上滑動(dòng)的時(shí)候連續(xù)地觸發(fā)。
touchstart: 當(dāng)手指觸摸屏幕時(shí)候觸發(fā),即使已經(jīng)有一個(gè)手指放在屏幕上也會(huì)觸發(fā)
touchend: 當(dāng)手指從屏幕上離開(kāi)的時(shí)候觸發(fā)。
TouchEvent對(duì)象
每一個(gè)touch事件的觸發(fā)都會(huì)產(chǎn)生一個(gè)TouchEvent對(duì)象,以下是TouchEvent對(duì)象三個(gè)比較常用的重要屬性
touches 當(dāng)前位于屏幕上的所有手指的一個(gè)列表。
targetTouches 特定于事件目標(biāo)的Touch對(duì)象的數(shù)組。[當(dāng)前手指]
changeTouches 表示自上次觸摸以來(lái)發(fā)生了什么改變的Touch對(duì)象的數(shù)組。
在這里,我用js寫(xiě)了一個(gè)touch事件,點(diǎn)擊屏幕可觸發(fā),將其事件事件對(duì)象在控制臺(tái)打印出,結(jié)果如下(箭頭指向的是上述三個(gè)屬性):
window.addEventListener("touchstart",function(event){
console.log(event);
})

觸摸事件對(duì)象屬性
touches、targetTou、changeTouches都包含以下屬性值
clientX:觸摸目標(biāo)在視口中的x坐標(biāo)。
clientY:觸摸目標(biāo)在視口中的y坐標(biāo)。
identifier:標(biāo)識(shí)觸摸的唯一ID。
pageX:觸摸目標(biāo)在頁(yè)面中的x坐標(biāo)。
pageY:觸摸目標(biāo)在頁(yè)面中的y坐標(biāo)。
screenX:觸摸目標(biāo)在屏幕中的x坐標(biāo)。
screenY:觸摸目標(biāo)在屏幕中的y坐標(biāo)。
target:觸摸的DOM節(jié)點(diǎn)目標(biāo)。
還是上面的那個(gè)例子,changeTouches對(duì)象在控制臺(tái)輸出如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
- 使用JS監(jiān)聽(tīng)鍵盤(pán)按下事件(keydown event)
- jQuery/JS監(jiān)聽(tīng)input輸入框值變化實(shí)例
- Nodejs監(jiān)聽(tīng)日志文件的變化的過(guò)程解析
- 教你3分鐘利用原生js實(shí)現(xiàn)有進(jìn)度監(jiān)聽(tīng)的文件上傳預(yù)覽組件
- vuejs中監(jiān)聽(tīng)窗口關(guān)閉和窗口刷新事件的方法
- JS觸摸事件、手勢(shì)事件詳解
- 基于Angular.js實(shí)現(xiàn)的觸摸滑動(dòng)動(dòng)畫(huà)實(shí)例代碼
- JS觸摸屏網(wǎng)頁(yè)版仿app彈窗型滾動(dòng)列表選擇器/日期選擇器
- 移動(dòng)端js觸摸事件詳解
- JavaScript監(jiān)聽(tīng)觸摸事件代碼實(shí)例
相關(guān)文章
如何通過(guò)IntersectionObserver實(shí)現(xiàn)懶加載
這篇文章主要介紹了通過(guò)IntersectionObserver實(shí)現(xiàn)懶加載,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
JavaScript使用addEventListener添加事件監(jiān)聽(tīng)用法實(shí)例
這篇文章主要介紹了JavaScript使用addEventListener添加事件監(jiān)聽(tīng)的方法,實(shí)例分析了addEventListener方法的相關(guān)使用技巧,需要的朋友可以參考下2015-06-06
在Node.js中使用Javascript Generators詳解
下面小編就為大家?guī)?lái)一篇在Node.js中使用Javascript Generators詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考2016-05-05
javascript實(shí)現(xiàn)左右緩動(dòng)動(dòng)畫(huà)函數(shù)
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)左右緩動(dòng)動(dòng)畫(huà)函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
JavaScript Serializer序列化時(shí)間處理示例
JavaScriptSerializer序列化時(shí)間后會(huì)把時(shí)間序列化成N進(jìn)制的鬼數(shù)據(jù) ,下面有個(gè)示例,需要的朋友可以了解下2014-07-07
JS自定義滾動(dòng)條效果簡(jiǎn)單實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了JS自定義滾動(dòng)條效果的簡(jiǎn)單實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
JavaScript 總結(jié)幾個(gè)提高性能知識(shí)點(diǎn)(推薦)
下面小編就為大家?guī)?lái)一篇JavaScript 總結(jié)幾個(gè)提高性能知識(shí)點(diǎn)(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
使用Web?Component實(shí)現(xiàn)防篡改水印
Web?Component內(nèi)部有鉤子天然支持被篡改時(shí)被觸發(fā),用來(lái)防篡改非常方便,所以本文就將使用Web?Component實(shí)現(xiàn)防篡改水印,感興趣的小伙伴可以了解下2023-12-12

