触屏中的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 相关文章推荐
jQuery 版本的文本输入框检查器Input Check
Jul 09 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
Sep 14 Javascript
JS计算网页停留时间代码
Apr 28 Javascript
node.js中的fs.realpath方法使用说明
Dec 16 Javascript
自己动手手写jQuery插件总结
Jan 20 Javascript
jQuery实现为图片添加镜头放大效果的方法
Jun 25 Javascript
jquery插件之文字间歇自动向上滚动效果代码
Feb 25 Javascript
js闭包用法实例详解
Dec 13 Javascript
js replace()去除代码中空格的实例
Feb 14 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
Apr 01 jQuery
详解angularJS自定义指令间的相互交互
Jul 05 Javascript
IE9 elementUI文件上传的问题解决
Oct 17 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
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
你必须知道的Javascript知识点之"字面量和对应类型"说明介绍
2013/04/23 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
js实现表单及时验证功能 用户信息立即验证
2016/09/13 Javascript
JavaScript中的编码和解码函数
2017/02/15 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
iview同时验证多个表单问题总结
2018/09/29 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
解决vue打包后刷新页面报错:Unexpected token
2019/08/27 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
Python实现各种排序算法的代码示例总结
2015/12/11 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
python如何从文件读取数据及解析
2019/09/19 Python
python中封包建立过程实例
2021/02/18 Python
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
Zadig&Voltaire官网:法国时装品牌
2018/01/05 全球购物
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
教研活动总结
2014/04/28 职场文书
拾金不昧锦旗标语
2014/06/27 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
药店营业员岗位职责
2015/04/14 职场文书
停电调休通知
2015/04/16 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
计算机实训心得体会
2016/01/14 职场文书
《植树问题》教学反思
2016/03/03 职场文书