移动互联网终端的touch事件,touchstart,touchend,touchmove神奇的旋风

如果我们允许用户在页面上用类似桌面浏览器鼠标手势的方式来控制WEBAPP,这个页面上肯定是有很多可点击区域的,如果用户触摸到了那些可点击区域怎么办呢诸如智能手机和平板电脑一类的移动设备通常会有一个电容式触摸屏(capacitivetouch-sensitivescreen),以捕捉用户的手指所做的交互。随着移动网络的发展,其能够支持越来越复杂的应用,web开发者需要一种方法来处理这些事件。例如,几乎所有的快节奏游戏都需要玩家一次按下多个按钮,这种方式,在触摸屏情况下,意味着多点触摸。Apple在iOS2.0中引入了触摸事件API,Android正迎头赶上这一事实标准,缩小差距。最近一个W3C工作组正合力制定这一触摸事件规范。在本文中,我会深入研究iOS和Android设备提供的触摸事件API,探索一下可以构建哪些类型的应用,给出一些最佳做法,并论及一些使得可触控应用(touch-enabledapplication)的开发变得更加容易的有用技术。

触摸事件

三种在规范中列出并获得跨移动设备广泛实现的基本触摸事件:

1.touchstart:手指放在一个DOM元素上。2.touchmove:手指拖曳一个DOM元素。3.touchend:手指从一个DOM元素上移开。

每个触摸事件都包括了三个触摸列表:

1.touches:当前位于屏幕上的所有手指的一个列表。2.targetTouches:位于当前DOM元素上的手指的一个列表。3.changedTouches:涉及当前事件的手指的一个列表。

例如,在一个touchend事件中,这就会是移开的手指。

这些列表由包含了触摸信息的对象组成:

1.identifier:一个数值,唯一标识触摸会话(touchsession)中的当前手指。2.target:DOM元素,是动作所针对的目标。3.客户/页面/屏幕坐标:动作在屏幕上发生的位置。4.半径坐标和rotationAngle:画出大约相当于手指形状的椭圆形。

可触控应用

touchstart、touchmove和touchend事件提供了一组足够丰富的功能来支持几乎是任何类型的基于触摸的交互——其中包括常见的多点触摸手势,比如说捏缩放、旋转等待。

下面的这段代码让你使用单指触摸来四处拖曳一个DOM元素:

varobj=document.getElementById('id');obj.addEventListener('touchmove',function(event){//如果这个元素的位置内只有一个手指的话if(event.targetTouches.length==1){vartouch=event.targetTouches[0];//把元素放在手指所在的位置obj.style.left=touch.pageX+'px';obj.style.top=touch.pageY+'px';}},false);

下面是一个示例,该例子显示了屏幕上当前所有的触点,它的作用就是用来感受一下设备的响应性。

//设置画布并通过ctx变量来暴露上下文canvas.addEventListener('touchmove',function(event){for(vari=0;i

演示

最佳做法

阻止缩放

缺省的多点触摸设置不是特别的好用,因为你的滑动和手势往往与浏览器的行为有关联,比如说滚动和缩放。

要禁用缩放功能的话,使用下面的元标记设置你的视图区(viewport),这样其对于用户来说就是不可伸缩的了:

content="width=device-width,initial-scale=1.0,user-scalable=no">

阻止滚动

一些移动设备有缺省的touchmove行为,比如说经典的iOSoverscroll效果,当滚动超出了内容的界限时就引发视图反弹。这种做法在许多多点触控应用中会带来混乱,但要禁用它很容易。

document.body.addEventListener('touchmove',function(event){event.preventDefault();},false);

细心渲染

如果你正在编写的多点触控应用涉及了复杂的多指手势的话,要小心地考虑如何响应触摸事件,因为一次要处理这么多的事情。考虑一下前面一节中的在屏幕上画出所有触点的例子,你可以在有触摸输入的时候就立刻进行绘制:

canvas.addEventListener('touchmove',function(event){renderTouches(event.touches);},

不过这一技术并不是要随着屏幕上的手指个数的增多而扩充,替代做法是,可以跟踪所有的手指,然后在一个循环中做渲染,这样可获得更好的性能:

vartouches=[]canvas.addEventListener('touchmove',function(event){touches=event.touches;},false);//设置一个每秒60帧的定时器timer=setInterval(function(){renderTouches(touches);},15);

要记住的一点是,event.touches是与屏幕接触的所有手指的一个数组,而不仅是位于目标DOM元素上的那些。你可能会发现使用event.targetTouches和event.changedTouches来代替event.touches更有用一些。

设备支持

遗憾的是,触摸事件的实现在完备性和质量方面的差别很大。我编写了一个诊断脚本来显示一些关于触摸API实现的基本信息,其中包括哪些事件是支持的,以及touchmove事件触发的解决方案。我在NexusOne和NexusS硬件上测试了Android2.3.3,在Xoom上测试了Android3.0.1,以及在iPad和iPhone上测试了iOS4.2。

简而言之,所有被测试的浏览器都支持touchstart、touchend和touchmove事件。

规范提供了额外的三个触摸事件,但被测试的浏览器没有支持它们:

1.touchenter:移动的手指进入一个DOM元素。2.toucheleave:移动手指离开一个DOM元素。3.touchcancel:触摸被中断(实现规范)。

被测试的浏览器还在每个触摸列表内部都提供了touches、targetTouches和changedTouches列表。不过,被测试的浏览器没有支持radiusX、radiusY或是rotationAngle属性,这些属性指明触摸屏幕的手指的形状。在一次touchmove期间,事件大约一秒钟触发60次,所有的被测试设备都是这样。

Xoom的浏览器对多点触摸有一个基本的支持,不过只能是在单个的DOM元素上起作用。浏览器不能正确响应同时发生在不同DOM元素上的两处触摸,换句话说,下面的代码会对两个同时发生的触摸的给出反应:

obj1.addEventListener('touchmove',function(event){for(vari=0;i

但下面的代码则不会:

varobjs=[obj1,obj2];for(vari=0;i

iOS设备完全支持多点触摸,能够跟踪多个手指,并在浏览器中提供一个非常敏感的触摸体验。

开发者工具

在移动开发中,一种较为容易的做法是,先在桌面上开始原型设计,然后再在打算要支持的设备上处理移动特有的部分。多点触摸正是难以在PC上进行测试的那些功能之一,因为大部分的PC都没有触摸输入。

不得不在移动设备上进行的测试有可能会拉长你的开发周期,因为你所做的每项改变都需要提交代码到服务器上,接着再加载到设备上。然后,一旦运行后,对应用也就没有太多的调试了,因为平板电脑和智能手机都很缺乏web开发者所用的工具。

这个问题的一个解决方案是在开发机器上模拟触发事件。对于单点触摸,触摸事件可以基于鼠标事件来模拟。如果你有触摸输入设备的话,比如说现代的AppMacBook,那么多点触摸也可以被模拟。

单点触摸事件

多点触摸事件

4.以如下方式把magictouch.js脚本和npTuioClient插件包含到你的应用中:

......Touchinputpluginfailedtoload!

我只在Chrome10上测试了这一方法,不过只要稍做调整它应该能够在其他的现代浏览器上工作。

需要注意的一点是,你的手势可以是和OS层面的多点触摸手势相同的。在OSX上,你可以通过进入SystemPreferences中的Trackpad偏好设定版面来配置系统范围的事件。

随着多点触摸功能逐渐得到跨移动浏览器的的广泛支持,我非常高兴地看到新的web应用充分利用了这一丰富的API。

THE END
1.超大手鼠标品牌排行榜十大品牌京东JD.COM为您提供超大手鼠标排行榜、超大手鼠标哪个牌子好、超大手鼠标十大品牌等相关资讯,从超大手鼠标价格、评价、图片等多方便比较,为您推荐品牌超大手鼠标,网购超大手鼠标上京东,放心又轻松!https://www.jd.com/phb/670982d68e27a32a992.html
2.Dota选手用的鼠标Dota选手使用的鼠标种类有很多,因为不同的选手有不同的偏好和需求。一些常见的Dota选手使用的鼠标包括Logitech G502、Razer DeathAdder、SteelSeries Rival等。这些鼠标通常具有良好的手感、精确度和可定制性,适合长时间的游戏使用。当然,具体选择鼠标还是要根据个人喜好、习惯以及个人需求来决定。https://news.yiche.com/baike/4668144.html
3.办公室中巨手从墙进来视频新片场社区汇聚全球优秀创作人和海量作品精选出139条办公室中巨手从墙进来等4K原创短视频,覆盖办公室中巨手从墙进来相关的广告,宣传片,剧情短片,创意混剪,婚礼,纪录片,特殊摄影,旅拍,Vlog,影视干货教程,音乐MV等办公室中巨手从墙进来无水印高清视频案例学习下载https://www.xinpianchang.com/search/1244615
4.《夺命鼠标1080p中英双字》新视觉免费在线播放他动作看似没有出掌,但双脚踏立,身体挺得笔直,整个人就仿佛天降巨手,拍击在金色大日上,帮助支撑封印。 举报 86625 1 贾森·戴 傅恩书剑光成圆,一个光环出现,仿若一重新世界的大门。 举报 814934 22668 平川まもる 燕赵歌颔首:“不错,他们深入景清洲内部,以自身修为对抗抵挡无尽元磁风暴,双方形成对抗,彼此http://www.tuopantj.com/Play/15_408878.html
5.西柏坡红色之旅的手抄报图片大全.pdf文档介绍:该【西柏坡红色之旅的手抄报图片大全】是由【鼠标】上传分享,文档一共【2】页,该文档可以免费在线阅读,需要了解更多关于【西柏坡红色之旅的手抄报图片大全】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您https://m.taodocs.com/p-914054505.html
6.在Steam上购买雾方福地有时候还会遇到各种“诱惑巨手”,能用“余烬”与其交易获得好处,但是“诱惑”俩个字始终不是说着玩的,一个把持不住,计算“余烬”错误,可能就会倒在踏入村庄的最后一步上,永远的成为“迷失者”的一员,游戏也就只能进入下一个轮回了!整体而言,《雾方福地》的玩法还是相当不错的,轻微的肉鸽元素让我们每次开场能https://store.steampowered.com/app/2856370/__Into_the_Emberlands/
7.电脑史话(说历史视频)腾讯云开发者社区虽然当初只花了军械部40万元的研制费用,可谁能料到,维护它的费用后来竟超过200万之巨!埃历阿克最致命的缺点是程序与计算两分离。指挥埃历阿克2万只电子管工作的程序指令,被存放在机器的外部电路里。需要计算某个题目前,埃克特必须分派几十员精兵强将,把数百条线路用手接通,像一群电话接线员那样手忙脚乱地https://cloud.tencent.com/developer/article/2062838
8.介绍自己的学校作文(通用65篇)往左拐就到了方圆剧场,每次有重大的活动都会在那里进行。方圆剧场外面就到了我们嬉戏的地方——操场。操场上,一个个体育器材仿佛巨人搭的积木,井井有条地排列在操场上。跟操场相邻的是UP广场。UP广场上有两个巨大的花坛,仿佛一双巨手把UP广场“托”了起来。 https://www.ruiwen.com/zuowen/shuoshuowoziji/6259866.html
9.手字组词有哪些词语组词拍手、巨手、苦手、左手、良手、手翰、巧手、手刺、手泽 到手、手禀、手腕、手械、呵手、开手、手扎、二手、抬手 勾手、贵手、共手、助手、身手、手纸、手掌、手熟、手格 还手、垂手、手旗、手肘、浇手、拱手、手藳、手势、抄手 异手、负手、里手、放手、手制、侧手、背手、手模、义手 https://www.027art.com/xiaoxue/HTML/13771820.html
10.生活是美好作文(精选57篇)大风呼呼地咆哮着,仿佛一双巨手在任意摆弄着小绿苗,要将它连根拔起,卷入苍茫的天际。周围的砂石扫荡着它,可是绿色的小生命顽强抵抗,经受住了侵袭。 “在未来的游戏中,你不用在屏幕前打着键盘,握着鼠标,而是身临其境般地成为了游戏里的主角。现在逛街基本都在用手机淘宝来购物,未来你可以使用AR5G技术,走https://www.unjs.com/zuowendaquan/shenghuozuowen/3932497.html
11.刘慈欣三体第二部.pdf当圆柱体升上高 空时,扁角鹿们发现刚才那令它们恐惧的暴烈景 象变得平和了,那个圆柱体拖着一根长长的白色 尾迹在高空中消失,仿佛下面的雪原就是一个大 自线团,一只看不见的巨手从线团中抽出一根线 拉向太空。 “见鬼!就差几秒钟,我就能确定中止发射 了!”在千里之外的科罗拉多州斯普林斯,夏延山 地下三百米https://max.book118.com/html/2018/1219/5020330113001341.shtm
12.税务座谈会领导讲话稿演讲大全就像一位哲人说到的那样:当周围的一切似乎平和爽朗,你看不见一片乌云像一只巨手在威胁着你,千万不要忘记事物的轮回。 我坚信在全体同志们共同努力下,在各部门的密切配合协作下,团结一心,群策群力,没有克服不了的困难,一定能够实现明年我们提出的“保稳定、抓管理、增效益”的总体工作思路,一定能够完成我们向上级https://www.meiweny.cn/aiqing/aiqinggushi/157982.html
13.紧握造句45、阴流泉话音落下,那巨手已然合指成拳,生生将三剑紧握于其中,然后不管不顾的挟着滔天的气焰,对着凌寒爆击而去。 46、唯一能做的就是,遇见是,紧握手中珍惜;离别后,深藏心底铭记。 47、当第八个啮合锁定,虫洞嗖的打开,伴着释然的低语和些许欢呼,而Sheppard愈发紧握拳头,指甲深陷掌心。 https://www.chazidian.com/zj-252134/
14.汉语词典在线查询成语词典在线查询在线查词众所周知,“鼠标手”是因为操作电脑时间过长造成的。但是,对于电脑给人们带来的另外一种伤害——“电脑脖”恐怕并不引起人们的注意。南京中医院骨科主任杭柏亚介绍说,由于从事上述职业的大多是女性,“电脑脖”患病群体中女性占了大多数。 骨科主任杭柏亚介绍说,来他们科室就诊的病人中10个人就有6人患有颈间、腰间疾病https://www.hujiang.com/cidian/cdzxcx_13369/
15.《峡谷正能量》最新章节目录更新免费全本小说txt下载第五百四十章 这就是三亿鼠标的刚枪梦?!(二合一求月票求订阅) 第五百四十一章 精壮小伙不请自来第七百四十五章 什么叫顶流巨手啊?(双倍求月票) 第七百四十六章 强啊峰哥! 第七百四十七章 真正https://www.hongxiu.com/chapterlist/14539694105906004
16.雨落即景作文(精选54篇)雨下得没完没了。那淅淅沥沥的雨珠,敲击着广漠的田野,就好像有一只看不见的巨手,在拨弄着一个无限大的筝琴。 雨点儿如烟如雾,无声地飘洒在那空地上的瓦砾堆里、枯枝败叶上。淋湿了地,淋湿了房,淋湿了树。 雨下得不是很大,可是很细,很密,扑到人的脸上好像扑粉似的`。整个空阔无人的山里,都是这种轻飘https://www.yuwenmi.com/zuowen/tuijian/3526140.html
17.《赢家圣地》陈楸帆某种知觉在迅速膨胀,其他感官蜷缩到次要的位置,像是整个躯体被包裹于一枚无比巨大的蛋黄,你能感到四面八方传来有节律的震颤,一种均匀的压力迟滞而坚定地迫近,仿佛有一只巨手捏着这枚鸡蛋,而它将无可避免地走向破碎。 世界便是这枚鸡蛋。 这就是谢天天的不安全感,比吴谓所体验过的所有脆弱与惊恐加起来还要强烈https://www.douban.com/note/801085002/