1. 程式人生 > >HTML5實戰與剖析之觸控事件(touchstart、touchmove和touchend)

HTML5實戰與剖析之觸控事件(touchstart、touchmove和touchend)

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

  一開始觸控事件touchstart、touchmove和touchend是iOS版Safari瀏覽器為了向開發人員傳達一些資訊新新增的事件。因為ios裝置既沒有滑鼠也沒有鍵盤,所以在為移動Safari瀏覽器開發互動性網頁的時候,PC端的滑鼠和鍵盤事件是不夠用的。

  在iPhone 3Gs釋出的時候,其自帶的移動Safari瀏覽器就提供了一些與觸控(touch)操作相關的新事件。隨後,

Android上的瀏覽器也實現了相同的事件。觸控事件(touch)會在使用者手指放在螢幕上面的時候、在螢幕上滑動的時候或者是從螢幕上移開的時候出發。下面具體說明:

  touchstart事件:當手指觸控式螢幕幕時候觸發,即使已經有一個手指放在螢幕上也會觸發。

  touchmove事件:當手指在螢幕上滑動的時候連續地觸發。在這個事件發生期間,呼叫preventDefault()事件可以阻止滾動。

  touchend事件:當手指從螢幕上離開的時候觸發。

  touchcancel事件:當系統停止跟蹤觸控的時候觸發。關於這個事件的確切出發時間,文件中並沒有具體說明,咱們只能去猜測了。

  上面的這些事件都會冒泡,也都可以取消。雖然這些觸控事件沒有在DOM規範中定義,但是它們卻是以相容DOM的方式實現的。所以,每個觸控事件的event物件都提供了在滑鼠實踐中常見的屬性:bubbles(起泡事件的型別)、cancelable(是否用 preventDefault() 方法可以取消與事件關聯的預設動作)、clientX(返回當事件被觸發時,滑鼠指標的水平座標)、clientY(返回當事件觸發時,滑鼠指標的垂直座標)、screenX(當某個事件被觸發時,滑鼠指標的水平座標)和screenY(返回當某個事件被觸發時,滑鼠指標的垂直座標)。除了常見的DOM屬性,觸控事件還包含下面三個用於跟蹤觸控的屬性。

  touches:表示當前跟蹤的觸控操作的touch物件的陣列。

  targetTouches:特定於事件目標的Touch物件的陣列。

  changeTouches:表示自上次觸控以來發生了什麼改變的Touch物件的陣列。

  每個Touch物件包含的屬性如下。

  clientX:觸控目標在視口中的x座標。

  clientY:觸控目標在視口中的y座標。

  identifier:標識觸控的唯一ID。

  pageX:觸控目標在頁面中的x座標。

  pageY:觸控目標在頁面中的y座標。

  screenX:觸控目標在螢幕中的x座標。

  screenY:觸控目標在螢幕中的y座標。

  target:觸目的DOM節點目標。

  上面的屬性光這麼看,果然非常繁瑣,每個屬性說的都是那麼的細緻,只有真刀實槍的來點小例子才能更加明白其中的奧妙。所以小例子如下。

function load (){  
  
    document.addEventListener('touchstart',touch, false);  
    document.addEventListener('touchmove',touch, false);  
    document.addEventListener('touchend',touch, false);  
      
    function touch (event){  
        var event = event || window.event;  
          
        var oInp = document.getElementById("inp");  
  
        switch(event.type){  
            case "touchstart":  
                oInp.innerHTML = "Touch started (" + event.touches[0].clientX + "," + event.touches[0].clientY + ")";  
                break;  
            case "touchend":  
                oInp.innerHTML = "<br/>Touch end (" + event.changedTouches[0].clientX + "," + event.changedTouches[0].clientY + ")";  
                break;  
            case "touchmove":  
                event.preventDefault();  
                oInp.innerHTML = "<br/>Touch moved (" + event.touches[0].clientX + "," + event.touches[0].clientY + ")";  
                break;  
        }  
          
    }  
}  
window.addEventListener('load',load, false);  



  HTML程式碼

[html] view plain copy  print?
  1. <divid="inp"></div>

  上面的小例子。當touchstart事件觸發的時候,會將觸控的位置更新到div標籤中。當touchmove事件觸發的時候,會預設行為的滾動(觸控移動的預設行為是滾動頁面),然後觸控操作的變化資訊更新到div標籤中。而touchend事件會輸出有關觸控操作的最終資訊。注意,在touchend事件觸發的時候,touches集合中就沒有任何Touch物件了,因為不存在活動的觸控操作。

  這些事件會在文件的所有元素上面觸發,因而可以分別操作頁面的不同部分。在觸控式螢幕幕上的元素,這些事件(包括滑鼠事件)發生的順序如下:

  (1)touchstart

  (2)mouseover

  (3)mousemove(一次)

  (4)mousedown

  (5)mouseup

  (6)click

  (7)touchend

  介紹了這麼多,這些觸控事件的相容情況怎麼樣呢?支援觸控事件(touchstart、touchmove和touchend)的瀏覽器有:iOs版Safari、android版WebKit、bada版Dolfin、OS6+中的BlackBerry WebKit、Opera Mobile 10.1+和LG專有OS中的Phantom瀏覽器。目前只有iOs版Safari支援多點觸控。PC版Firefox 6+ 和Chrome也支援觸控事件。

  html5實戰與剖析之觸控事件(touchstart、touchmove和touchend)就為大家介紹到這裡了,今天主要為大家介紹了些瀏覽器相容支援的情況還不錯的觸控事件。日後若有相容不錯的事件,再繼續介紹。更多有關Html5實戰與剖析的相關知識,敬請關注夢龍小站的相關更新。

轉載自:http://blog.csdn.net/lee_magnum/article/details/17753807

相關推薦

HTML5實戰剖析觸控事件(touchstarttouchmovetouchend)

 HTML5中新添加了很多事件,但是由於他們的相容問題不是很理想,應用實戰性不是太強,所以在這裡基本省略,咱們只分享應用廣泛相容不錯的事件,日後隨著相容情況提升以後再陸續新增分享。今天為大家介紹的事件主要是觸控事件:touchstart、touchmove和touchen

HTML5觸控事件(touchstarttouchmovetouchend)

 HTML5中新添加了很多事件,但是由於他們的相容問題不是很理想,應用實戰性不是太強,所以在這裡基本省略,咱們只分享應用廣泛相容不錯的事件,日後隨著相容情況提升以後再陸續新增分享。今天為大家介紹的事件主要是觸控事件:touchstart、touchmove和touchen

HTML5觸控事件(touchstarttouchmovetouchend)

touchstart事件:當手指觸控式螢幕幕時候觸發,即使已經有一個手指放在螢幕上也會觸發。 touchmove事件:當手指在螢幕上滑動的時候連續地觸發。在這個事件發生期間,呼叫preventDefault()事件可以阻止滾動。 touchend事件:當手指從

javaScript -- touch事件詳解(touchstarttouchmovetouchend

HTML5中新添加了很多事件,但是由於他們的相容問題不是很理想,應用實戰性不是太強,所以在這裡基本省略,咱們只分享應用廣泛相容不錯的事件,日後隨著相容情況提升以後再陸續新增分享。今天為大家介紹的事件主要是觸控事件:touchstart、touchmove和tou

android面試題觸控事件分發處理簡述

android觸控事件分發與處理     android的分發機制:由父控制元件判斷是否攔截,如果不攔截事件,則繼續分發到子控制元件,然後一直分發下去。     處理:與分發相反,由子控制元件先處理事件,如果子控制元件不處理,則交給父控制元件處理,一直向上傳遞,直到那個控制

iOS開發觸控事件及手勢

非盈利無廣告開發者專用網址導航:www.dev666.com 1、iOS中的事件 在使用者使用app過程中,會產生各種各樣的事件,iOS中的事件可以分為3大型別: 2、響應者物件 在iOS中不是任何物件都能處理事件,只有繼承了UIResponder的物件才能接收並處理事件。我們

自定義控制元件觸控事件的傳遞

層面優先順序:Activity-->ViewGroup-->View 1、dispatchTouchEvent方法: 每個View包括ViewGroup中都能重寫此方法,該方法是用來分發觸控事件的。是一個佈局中,觸控事件首先執行的的方法。如果dispatchTo

cocos2dx觸控事件

兩種Cocos2d-x觸控事件: 1,我們已經見到了CCLayer處理觸控事件的方法。當我們開啟CCLayer的TouchEnable屬性後,層中的4個回撥函式就會在接收到事件時被觸發,我們把這類事件稱作標準觸控(standard touch)事件,它的特點是任何層都會平等

cocos2dX 事件觸控事件觸控事件集合

今天, 我們來學習cocos2dX裡面的觸控事件與觸控事件合集, 現在的手機遊戲互動基本上都是通過觸控互動的, 所以大家明白這節的重要性了吧, 本節篇幅比較大, 所以我就不扯閒話了 先來看看常用函式: 觸控事件: addTargeteDelegate( 誰使用, 優先順序

Linux Framebuffer驅動剖析二—驅動框架介面實現使用

 本文繼上一篇文章《Linux Framebuffer驅動剖析之一—軟體需求》,深入分析LinuxFramebuffer子系統的驅動框架、介面實現和使用。一、LinuxFramebuffer的軟體需求上

NodeJS官方文件中文版事件迴圈, 定時器process.nextTick()》

Node.js的事件迴圈, 定時器和process.nextTick() 什麼是事件迴圈? 事件迴圈允許Node.js通過儘可能地分流對系統核心的操作, 來執行 非阻塞 的I/O操作, 即使JavaScript是單執行緒的. 大多數現代的系統核心都是多

HTML5:Animate cc互動“聲音”的“開始暫停功能

一、實現效果開啟第一個頁面,聲音是在播放的,點選按鈕,跳到下一個地方,開啟第2個聲音,2個聲音之間是不會衝突的。二、步驟1.確定An cc軟體的幀數中,有沒有加入聲音事件,不能加入逐幀聲音,會有衝突,如圖:a.幀標籤註釋,正確b.逐幀聲音,錯誤2.確定你已經有加了路徑的cre

JavaScript 資料結構演算法美 - 氣泡排序插入排序選擇排序

1. 前言 演算法為王。 想學好前端,先練好內功,只有內功深厚者,前端之路才會走得更遠。 筆者寫的 JavaScript 資料結構與演算法之美 系列用的語言是 JavaScript ,旨在入門資料結構與演算法和方便以後複習。 之所以把氣泡排序、選擇排序、插入排序放在一起比較,是因為它們的平均時間複

JavaScript 資料結構演算法美 - 歸併排序快速排序希爾排序堆排序

1. 前言 演算法為王。 想學好前端,先練好內功,只有內功深厚者,前端之路才會走得更遠。 筆者寫的 JavaScript 資料結構與演算法之美 系列用的語言是 JavaScript ,旨在入門資料結構與演算法和方便以後複習。 之所以把歸併排序、快速排序、希爾排序、堆排序放在一起比較,是因為它們的平均時

JavaScript 資料結構演算法美 - 桶排序計數排序基數排序

1. 前言 演算法為王。 想學好前端,先練好內功,只有內功深厚者,前端之路才會走得更遠。 筆者寫的 JavaScript 資料結構與演算法之美 系列用的語言是 JavaScript ,旨在入門資料結構與演算法和方便以後複習。 之所以把 計數排序、桶排序、基數排序 放在一起比較,是因為它們的平均時間複雜

JQuery——鍵盤事件.keydown().keyup().keypress()

input元素 soft 組合鍵 pan 獲取 得到 輸入文本 獲得 down 鍵盤事件.keydown()、.keyup()和.keypress()1 .keydown()當用戶在一個元素上第一次按下鍵盤上字母鍵的時候,就會被觸發,與基本事件參數處理保持一

c#基礎學習(0724)可變參數refout

col ram test 不為 外部 rri money 改變 end params可變參數,無論有幾個參數,必須出現在參數列表的最後,可以為可變參數直接傳遞一個對應類型的數組 #region 可變參數 //1.如果方法有多個參數,可變參數可以作為最後一個參數 //2.可

Linux學習使用者切換su su - exit的不同

Linux命令列下切換使用者: su username su - username 還可以用exit退出,再次登入,例 [[email protected] pratice]$ su - root Password: Last login: Thu Aug 23 08

SSH學習02 【SSH網上商城專案實戰02】基本增刪查改ServiceAction的抽取以及使用註解替換xml

【SSH網上商城專案實戰02】基本增刪查改、Service和Action的抽取以及使用註解替換xml 轉自:https://blog.csdn.net/eson_15/article/details/51297698 上一節我們搭建好了Struts2、Hibernate和Spring的開

centos6.7下的系統備份恢復(bacula 的安裝配置執行)

一、安裝bacula 這裡對上一節的第一種bacula部署結構進行介紹。 主機名 IP地址 作業系統 應用角色 baculaServer 10.0.172.185   centos6.7 Director、SD、Console baculaClient 1