觸屏中的JavaScript事件分析
本文實(shí)例講述了觸屏中的JavaScript事件。分享給大家供大家參考。具體分析如下:
一、觸摸事件
ontouchstart
ontouchmove
ontouchend
ontouchcancel目前移動(dòng)端瀏覽器均支持這4個(gè)觸摸事件,包括IE。由于觸屏也支持MouseEvent,因此他們的順序是需要注意的:touchstart → mouseover → mousemove → mousedown → mouseup → click1
實(shí)例如下:
/** * onTouchEvent */ var div = document.getElementById("div"); //touchstart類似mousedown div.ontouchstart = function(e){ //事件的touches屬性是一個(gè)數(shù)組,其中一個(gè)元素代表同一時(shí)刻的一個(gè)觸控點(diǎn), //從而可以通過touches獲取多點(diǎn)觸控的每個(gè)觸控點(diǎn) //由于我們只有一點(diǎn)觸控,所以直接指向[0] var touch = e.touches[0]; //獲取當(dāng)前觸控點(diǎn)的坐標(biāo),等同于MouseEvent事件的clientX/clientY var x = touch.clientX; var y = touch.clientY; }; //touchmove類似mousemove div.ontouchmove = function(e){ //可為touchstart、touchmove事件加上preventDefault從而阻止觸摸時(shí), //瀏覽器的縮放、滾動(dòng)條滾動(dòng)等 e.preventDefault(); }; //touchend類似mouseup div.ontouchup = function(e){ //nothing to do };
二、手勢事件手勢是指利用多點(diǎn)觸控進(jìn)行旋轉(zhuǎn)、拉伸等操作,例如圖片、網(wǎng)頁的放大、旋轉(zhuǎn)。需要兩個(gè)或以上的手指同時(shí)觸摸時(shí)才會(huì)觸發(fā)手勢事件。關(guān)于縮放我們需要注意的一點(diǎn)是元素的位置坐標(biāo):我們通常使用offsetX、getBoundingClientRect等方法獲取元素的位置坐標(biāo),但在手機(jī)瀏覽器中頁面經(jīng)常會(huì)在使用中被縮放,那縮放后的元素坐標(biāo)會(huì)改變嗎?答案是有所差異。用一個(gè)情景來說明這個(gè)問題:頁面A加載完成后,JavaScript獲取到該元素在document中的坐標(biāo)為(100,100),接著用戶放大了頁面,此時(shí)用JavaScript再次輸出元素坐標(biāo),依然還是(100,100),但該元素在屏幕上的響應(yīng)區(qū)域會(huì)根據(jù)縮放比例產(chǎn)生偏移。你可以打開那個(gè)打磚塊游戲demo,等頁面完全加載完成后,再放大,此時(shí)你會(huì)發(fā)現(xiàn)即使手指觸摸在“touch here”區(qū)域外部,也可以控制到球板,因?yàn)閰^(qū)域發(fā)生了偏移。除非頁面刷新或者恢復(fù)縮放,否則偏移量將一直存在。
/** * onGestureEvent */ var div = document.getElementById("div"); div.ongesturechange = function(e){ //scale代表手勢產(chǎn)生的縮放比例,小于1是縮小,大于1是放大,原始為1 var scale = e.scale; //rotation代表旋轉(zhuǎn)手勢的角度,值區(qū)間[0,360],正值順時(shí)針旋轉(zhuǎn),負(fù)值逆時(shí)針 var angle = e.rotation; };
三、重力感應(yīng)重力感應(yīng)較簡單,只需要為body節(jié)點(diǎn)添加onorientationchange事件即可。在此事件中由window.orientation屬性得到代表當(dāng)前手機(jī)方向的數(shù)值。window.orientation的值列表如下:
0:與頁面首次加載時(shí)的方向一致
-90:相對(duì)原始方向順時(shí)針轉(zhuǎn)了90°
180:轉(zhuǎn)了180°
90:逆時(shí)針轉(zhuǎn)了90°據(jù)我測試,Android2.1尚未支持重力感應(yīng)。以上即目前的觸屏事件,這些事件尚未并入標(biāo)準(zhǔn),但已被廣泛使用。本人Android2.1,未在其他環(huán)境下測試。
PS:這里再為大家提供一個(gè)關(guān)于JS事件的在線工具,歸納總結(jié)了JS常用的事件類型與函數(shù)功能:
javascript事件與功能說明大全:
http://tools.jb51.net/table/javascript_event
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
- js 表格排序(編輯+拖拽+縮放)
- js最簡單的拖拽效果實(shí)現(xiàn)代碼
- javascript拖拽上傳類庫DropzoneJS使用方法
- js完美的div拖拽實(shí)例代碼
- js實(shí)現(xiàn)touch移動(dòng)觸屏滑動(dòng)事件
- js實(shí)現(xiàn)滑動(dòng)觸屏事件監(jiān)聽的方法
- JS+CSS實(shí)現(xiàn)仿觸屏手機(jī)撥號(hào)盤界面及功能模擬完整實(shí)例
- 基于JavaScript實(shí)現(xiàn)移動(dòng)端TAB觸屏切換效果
- javascript實(shí)現(xiàn)移動(dòng)端上的觸屏拖拽功能
相關(guān)文章
JavaScript中apply與call的用法意義及區(qū)別說明
JavaScript中有一個(gè)call和apply方法,其作用基本相同,但也有略微的區(qū)別。2010-04-04dropdownlist之間的互相聯(lián)動(dòng)實(shí)現(xiàn)(顯示與隱藏)
dropdownlist之間的互相聯(lián)動(dòng)(顯示與隱藏)2009-11-11js實(shí)現(xiàn)tab選項(xiàng)卡函數(shù)代碼
js實(shí)現(xiàn)tab選項(xiàng)卡函數(shù)代碼,需要的朋友可以參考下,這樣的代碼也是比較常用的,相當(dāng)原理也比較簡單。2010-04-04一文詳解JavaScript的事件監(jiān)聽(最新整理)
Web頁面需要經(jīng)常和用戶之間進(jìn)行交互,而交互的過程中我們可能想要捕捉這個(gè)交互的過程,比如用戶點(diǎn)擊了某個(gè)按鈕、用戶在輸入框里面輸入了某個(gè)文本、用戶鼠標(biāo)經(jīng)過了某個(gè)位置,下面介紹下JavaScript的事件監(jiān)聽,感興趣的朋友一起看看吧2024-01-01JS與CSS3實(shí)現(xiàn)圖片響應(yīng)鼠標(biāo)移動(dòng)放大效果示例
這篇文章主要介紹了JS與CSS3實(shí)現(xiàn)圖片響應(yīng)鼠標(biāo)移動(dòng)放大效果,結(jié)合實(shí)例形式分析了javascript與css3響應(yīng)鼠標(biāo)事件動(dòng)態(tài)修改頁面元素屬性實(shí)現(xiàn)圖片放大效果相關(guān)操作技巧,需要的朋友可以參考下2018-05-05JQuery 前臺(tái)切換網(wǎng)站的樣式實(shí)現(xiàn)
本文說的是在WordPress中怎樣利用JQuery在網(wǎng)站的前臺(tái)切換樣式的方法?;蛘哌@篇文章的方法大家可能不是太需要,因?yàn)槲矣X得這是解決我被主題樣式折騰到差不多分裂的原因及結(jié)果的最后手段。2009-06-06查看圖片(前進(jìn)后退)功能實(shí)現(xiàn)js代碼
前進(jìn)后退實(shí)現(xiàn)的前提是:images文件夾下圖片的命名是從1~5.jpg有規(guī)律的,感興趣的朋友可以參考下哈,希望可以幫助到你2013-04-04