触屏中的JavaScript事件分析


Posted in Javascript onFebruary 06, 2015

本文实例讲述了触屏中的JavaScript事件。分享给大家供大家参考。具体分析如下:

一、触摸事件

ontouchstart
ontouchmove
ontouchend
ontouchcancel目前移动端浏览器均支持这4个触摸事件,包括IE。由于触屏也支持MouseEvent,因此他们的顺序是需要注意的:touchstart → mouseover → mousemove → mousedown → mouseup → click1

实例如下:

/**
* onTouchEvent
*/
var div = document.getElementById("div");
//touchstart类似mousedown
div.ontouchstart = function(e){
//事件的touches属性是一个数组,其中一个元素代表同一时刻的一个触控点,
//从而可以通过touches获取多点触控的每个触控点
//由于我们只有一点触控,所以直接指向[0]
var touch = e.touches[0];
//获取当前触控点的坐标,等同于MouseEvent事件的clientX/clientY
var x = touch.clientX;
var y = touch.clientY;
};
//touchmove类似mousemove
div.ontouchmove = function(e){
//可为touchstart、touchmove事件加上preventDefault从而阻止触摸时,
//浏览器的缩放、滚动条滚动等
e.preventDefault();
};
//touchend类似mouseup
div.ontouchup = function(e){
//nothing to do
};

二、手势事件手势是指利用多点触控进行旋转、拉伸等操作,例如图片、网页的放大、旋转。需要两个或以上的手指同时触摸时才会触发手势事件。关于缩放我们需要注意的一点是元素的位置坐标:我们通常使用offsetX、getBoundingClientRect等方法获取元素的位置坐标,但在手机浏览器中页面经常会在使用中被缩放,那缩放后的元素坐标会改变吗?答案是有所差异。用一个情景来说明这个问题:页面A加载完成后,JavaScript获取到该元素在document中的坐标为(100,100),接着用户放大了页面,此时用JavaScript再次输出元素坐标,依然还是(100,100),但该元素在屏幕上的响应区域会根据缩放比例产生偏移。你可以打开那个打砖块游戏demo,等页面完全加载完成后,再放大,此时你会发现即使手指触摸在“touch here”区域外部,也可以控制到球板,因为区域发生了偏移。除非页面刷新或者恢复缩放,否则偏移量将一直存在。

/**
* onGestureEvent
*/
var div = document.getElementById("div");
div.ongesturechange = function(e){
//scale代表手势产生的缩放比例,小于1是缩小,大于1是放大,原始为1
var scale = e.scale;
//rotation代表旋转手势的角度,值区间[0,360],正值顺时针旋转,负值逆时针
var angle = e.rotation;
};

三、重力感应重力感应较简单,只需要为body节点添加onorientationchange事件即可。在此事件中由window.orientation属性得到代表当前手机方向的数值。window.orientation的值列表如下:

0:与页面首次加载时的方向一致
-90:相对原始方向顺时针转了90°
180:转了180°
90:逆时针转了90°据我测试,Android2.1尚未支持重力感应。以上即目前的触屏事件,这些事件尚未并入标准,但已被广泛使用。本人Android2.1,未在其他环境下测试。

PS:这里再为大家提供一个关于JS事件的在线工具,归纳总结了JS常用的事件类型与函数功能:

javascript事件与功能说明大全:

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
JS Array对象入门分析
Oct 30 Javascript
Javascript常考语句107条收集
Mar 09 Javascript
JavaScript 图像动画的小demo
May 23 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
Jun 06 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
Sep 01 Javascript
图解js图片轮播效果
Dec 20 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
Sep 14 Javascript
JS实现淡入淡出图片效果的方法分析
Dec 20 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
Jul 24 Javascript
React Native模块之Permissions权限申请的实例相机
Sep 28 Javascript
小程序红包雨的实现示例
Feb 19 Javascript
vue源码nextTick使用及原理解析
Aug 13 Javascript
JavaScript事件委托技术实例分析
Feb 06 #Javascript
JavaScript比较两个对象是否相等的方法
Feb 06 #Javascript
JavaScript 异常处理 详解
Feb 06 #Javascript
jquery中change()用法实例分析
Feb 06 #Javascript
javaScript的函数对象的声明详解
Feb 06 #Javascript
javascript实用方法总结
Feb 06 #Javascript
javascript实现限制上传文件大小
Feb 06 #Javascript
You might like
德生PL550的电路分析
2021/03/02 无线电
透析PHP的配置文件php.ini
2006/10/09 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
php支付宝接口用法分析
2015/01/04 PHP
php图像处理类实例
2015/07/28 PHP
Ajax+PHP实现的删除数据功能示例
2019/02/12 PHP
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
JS验证图片格式和大小并预览的简单实例
2016/10/11 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
Vue 实现从小到大的横向滑动效果详解
2019/10/16 Javascript
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
如何利用node转发请求详解
2020/09/17 Javascript
python基础教程之udp端口扫描
2014/02/10 Python
python实现堆栈与队列的方法
2015/01/15 Python
详解Python3中的Sequence type的使用
2015/08/01 Python
Django自定义用户认证示例详解
2018/03/14 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
YUV转为jpg图像的实现
2019/12/09 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
销售人员工作自我评价
2014/09/21 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
二十年同学聚会致辞
2015/07/28 职场文书
2016年圣诞节寄语(一句话)
2015/12/07 职场文书