移動端touch事件的處理

2022-09-15 21:03:22 字數 2945 閱讀 7791

首先簡單介紹一下ios上的瀏覽器(這裡主要指safari)所支援的

多觸式事件模型,然後將觸控(touch)這種簡單的動作公升級為手勢(gestrue),最後將j**ascript + html + 

css構建的應用脫離瀏覽器,放到ios裝置的螢幕上成為乙個本地link並和植物大戰殭屍放到一起。 

ios上的safari也支援click 和mouseover等傳統的互動事件,只是不推薦在ios的瀏覽器應用上使用click和

mouseover,因為這兩個事件是為了支援滑鼠點選而設計出來的。click事件在ios上會有半秒左右的延遲,原

因是ios要highlight接收到click的element。而mouseover/out等事件則會被手指的點選觸發。所以,在ios上

,應當拋棄傳統的互動事件模型而接受乙個新的事件模型。touch事件和更高階的gesture事件,能讓你的網頁

互動起來像native應用一樣。 

處理touch事件能讓你跟蹤使用者的每一根手指的位置。你可以繫結以下四種touch事件:

touchstart:// 手指放到螢幕上的時候觸發

touchmove:// 手指在螢幕上移動的時候觸發

touchend:// 手指從螢幕上拿起的時候觸發

touchcancel:// 系統取消touch事件的時候觸發。至於系統什麼時候會取消,不詳。。

client / clienty:// 觸控點相對於瀏覽器視窗viewport的位置

pagex / pagey:// 觸控點相對於頁面的位置

screenx /screeny:// 觸控點相對於螢幕的位置

identifier:// touch物件的unique id

css**

.spirit

然後,在body下定義乙個接收事件的容器,這裡body的height必須是100%才能佔滿整個viewport: 

html

<bodystyle=」height: 100%;margin:0;padding:0」>

<divid=」canvas」  style=」position: relative;width:100%;height: 100%;」>

定義touchstart的事件處理函式,並繫結事件:

j**ascript**

// define global variable

varcanvas = document.getelementbyid(「canvas」),

spirit, startx, starty;

// touch start listener

functiontouchstart(event)

// add touch start listener

canvas.addeventlistener(「touchstart」, touchstart,false);

首先,我們將方塊spirit作為乙個全域性物件,因為我們現在要測試單根手指所以螢幕上最好只有乙個物體在移動

j**ascript**

functiontouchmove(event)

canvas.addeventlistener(「touchmove」, touchmove,false);

在touch move listener中,我們使用webkit特有的css屬性:webkittransform來移動方塊,這個屬性具體怎麼用請google之。建議構造面向ios裝置的網頁的時候盡量使用webkit自己的特性,不但炫,更可以直接利用硬體來提高效能。 

最後,我們處理touchend事件。手指提起的時候方塊從螢幕上移除。

functiontouchend(event)

canvas.addeventlistener(「touchend」, touchend,false);

簡單demo:

//var 變數是為了點選進行相容

var touchstart = window.n**igator.mspointerenabled ? "mspointerdown" : "touchstart";

var touchmove = window.n**igator.mspointerenabled ? "mspointermove" : "touchmove";

var touchend = window.n**igator.mspointerenabled ? "mspointerup" : "touchend";

var timer="";

$(function() );

function touchstarts(event)

function touchmoves(event)

function touchends(event) ,1000)

移動端 touch事件

在模擬器下不支援用on的方式來給元素加touch事件,推薦用addeventlistener方式 mouse事件的觸發必須在元素範圍內,且在移動端會有300ms左右的延遲 在移動端,觸碰乙個元素時,會立即執行新增在元素上的touch事件,然後記錄座標,300ms之後在這個座標點查詢元素,如果找到元素...

移動端touch事件

1 touch事件 touch,觸控,是移動端的觸控事件,是一組事件 1.touchstart 當手指觸控到螢幕的時候觸發 只會觸發一次 2.touchmove 當手指在螢幕中滑動時觸發 一直觸發 3.touchend 當手指離開螢幕時觸發 只會觸發一次 4.touchcancel 被迫中止滑動時觸...

移動端touch事件

touch 事件 首先 touch 包含三類事件,它們分別是 touchstart touchmove touchend 望文生義這種本能相信你應該會有,但在這裡我還是有必需對這三個詞進行一翻不必要的解釋。touchstart 手指觸控到乙個 dom 元素時觸發。touchmove 手指在乙個 do...