首先簡單介紹一下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
<
body
style=」height: 100%;margin:0;padding:0」>
<
div
id=」canvas」 style=」position: relative;width:100%;height: 100%;」>
定義touchstart的事件處理函式,並繫結事件:
j**ascript**
// define global variable
var
canvas = document.getelementbyid(「canvas」),
spirit, startx, starty;
// touch start listener
function
touchstart(event)
// add touch start listener
canvas.addeventlistener(「touchstart」, touchstart,
false
);
首先,我們將方塊spirit作為乙個全域性物件,因為我們現在要測試單根手指所以螢幕上最好只有乙個物體在移動
j**ascript**
function
touchmove(event)
canvas.addeventlistener(「touchmove」, touchmove,
false
);
在touch move listener中,我們使用webkit特有的css屬性:webkittransform來移動方塊,這個屬性具體怎麼用請google之。建議構造面向ios裝置的網頁的時候盡量使用webkit自己的特性,不但炫,更可以直接利用硬體來提高效能。
最後,我們處理touchend事件。手指提起的時候方塊從螢幕上移除。
function
touchend(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...