整理HTML5移動端開發(fā)的常用觸摸事件
來源:易賢網 閱讀:985 次 日期:2016-07-04 16:44:27
溫馨提示:易賢網小編為您整理了“整理HTML5移動端開發(fā)的常用觸摸事件”,方便廣大網友查閱!

這篇文章主要介紹了整理HTML5移動端開發(fā)的常用觸摸事件,觸摸事件的event對象基本上都是按照鼠標操作的屬性進行對應,需要的朋友可以參考下

HTML5中新添加了很多事件,但是由于他們的兼容問題不是很理想,應用實戰(zhàn)性不是太強,所以在這里基本省略,咱們只分享應用廣泛兼容不錯的事件,日后隨著兼容情況提升以后再陸續(xù)添加分享。今天為大家介紹的事件主要是觸摸事件:touchstart、touchmove和touchend。

一開始觸摸事件touchstart、touchmove和touchend是iOs版Safari瀏覽器為了向開發(fā)人員傳達一些信息新添加的事件。因為iOs設備既沒有鼠標也沒有鍵盤,所以在為移動Safari瀏覽器開發(fā)交互性網頁的時候,PC端的鼠標和鍵盤事件是不夠用的。

在iPhone 3Gs發(fā)布的時候,其自帶的移動Safari瀏覽器就提供了一些與觸摸(touch)操作相關的新事件。隨后,Android上的瀏覽器也實現了相同的事件。觸摸事件(touch)會在用戶手指放在屏幕上面的時候、在屏幕上滑動的時候或者是從屏幕上移開的時候出發(fā)。下面具體說明:

touchstart事件:當手指觸摸屏幕時候觸發(fā),即使已經有一個手指放在屏幕上也會觸發(fā)。

touchmove事件:當手指在屏幕上滑動的時候連續(xù)地觸發(fā)。在這個事件發(fā)生期間,調用preventDefault()事件可以阻止?jié)L動。

touchend事件:當手指從屏幕上離開的時候觸發(fā)。

touchcancel事件:當系統(tǒng)停止跟蹤觸摸的時候觸發(fā)。關于這個事件的確切出發(fā)時間,文檔中并沒有具體說明,咱們只能去猜測了。

上面的這些事件都會冒泡,也都可以取消。雖然這些觸摸事件沒有在DOM規(guī)范中定義,但是它們卻是以兼容DOM的方式實現的。所以,每個觸摸事件的event對象都提供了在鼠標實踐中常見的屬性:bubbles(起泡事件的類型)、cancelable(是否用 preventDefault() 方法可以取消與事件關聯(lián)的默認動作)、clientX(返回當事件被觸發(fā)時,鼠標指針的水平坐標)、clientY(返回當事件觸發(fā)時,鼠標指針的垂直坐標)、screenX(當某個事件被觸發(fā)時,鼠標指針的水平坐標)和screenY(返回當某個事件被觸發(fā)時,鼠標指針的垂直坐標)。除了常見的DOM屬性,觸摸事件還包含下面三個用于跟蹤觸摸的屬性。

touches:表示當前跟蹤的觸摸操作的touch對象的數組。

targetTouches:特定于事件目標的Touch對象的數組。

changeTouches:表示自上次觸摸以來發(fā)生了什么改變的Touch對象的數組。

每個Touch對象包含的屬性如下。

clientX:觸摸目標在視口中的x坐標。

clientY:觸摸目標在視口中的y坐標。

identifier:標識觸摸的唯一ID。

pageX:觸摸目標在頁面中的x坐標。

pageY:觸摸目標在頁面中的y坐標。

screenX:觸摸目標在屏幕中的x坐標。

screenY:觸摸目標在屏幕中的y坐標。

target:觸目的DOM節(jié)點目標。

每個觸摸點由包含了如下觸摸信息(常用):

identifier:一個數值,唯一標識觸摸會話(touch session)中的當前手指。一般為從0開始的流水號(android4.1,uc)

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

pageX/pageX/clientX/clientY/screenX/screenY:一個數值,動作在屏幕上發(fā)生的位置(page包含滾動距離,client不包含滾動距離,screen則以屏幕為基準)。

radiusX/radiusY/rotationAngle:畫出大約相當于手指形狀的橢圓形,分別為橢圓形的兩個半徑和旋轉角度。初步測試瀏覽器不支持,好在功能不常用,歡迎大家反饋。

JavaScript操作小例子:

JavaScript Code

var obj = document.getElementByIdx_x('id');   

obj.addEventListener('touchmove', function(event) {   

     // 如果這個元素的位置內只有一個手指的話   

    if (event.targetTouches.length == 1) {   

event.preventDefault();// 阻止瀏覽器默認事件,重要    

        var touch = event.targetTouches[0];   

        // 把元素放在手指所在的位置   

        obj.style.left = touch.pageX-50 + 'px';   

        obj.style.top = touch.pageY-50 + 'px';   

        }   

}, false);  

更多信息請查看網頁制作

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權所有:易賢網