触屏中的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 相关文章推荐
JavaScript 对象成员的可见性说明
Oct 16 Javascript
jquery入门—编写一个导航条(可伸缩)
Jan 07 Javascript
关于全局变量和局部变量的那些事
Jan 11 Javascript
jQuery层次选择器选择元素使用介绍
Apr 18 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
Mar 05 Javascript
jquery form表单获取内容以及绑定数据
Feb 24 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
Jun 07 Javascript
基于input框覆盖掉数字英文的实例讲解
Jul 21 Javascript
node.js 利用流实现读写同步,边读边写的方法
Sep 11 Javascript
原生JS实现汇率转换功能代码实例
May 13 Javascript
解决vue-router路由拦截造成死循环问题
Aug 05 Javascript
vue 通过base64实现图片下载功能
Dec 19 Vue.js
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
E路文章系统PHP
2006/12/11 PHP
php+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
2013/06/28 PHP
PHP批量上传图片的具体实现方法介绍.
2014/02/26 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
laravel使用Faker数据填充的实现方法
2019/04/12 PHP
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
Dojo 学习要点
2010/09/03 Javascript
ajax上传时参数提交不更新等相关问题
2012/12/11 Javascript
jQuery对Select的操作大集合(收藏)
2013/12/28 Javascript
jQuery中each()方法用法实例
2014/12/27 Javascript
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
高性能的javascript之加载顺序与执行原理篇
2018/01/14 Javascript
react组件基本用法示例小结
2020/04/27 Javascript
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
python构建深度神经网络(续)
2018/03/10 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
用scikit-learn和pandas学习线性回归的方法
2019/06/21 Python
python如何保证输入键入数字的方法
2019/08/23 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
深入理解Python变量的数据类型和存储
2021/02/01 Python
会计专业毕业生自我评价
2013/09/25 职场文书
大专毕业自我鉴定
2014/02/04 职场文书
网络编辑求职信
2014/04/30 职场文书
设计师求职信模板
2014/05/06 职场文书
个人租房协议书范本
2014/09/30 职场文书
《穷人》教学反思
2016/02/19 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
浅谈MySQL之select优化方案
2021/08/07 MySQL