触屏中的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 实现双色表格实现代码
Nov 24 Javascript
js中同步与异步处理的方法和区别总结
Dec 25 Javascript
JS判断两个时间大小的示例代码
Jan 28 Javascript
jQuery实现当按下回车键时绑定点击事件
Jan 28 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
May 27 Javascript
JS原型链 详解及示例代码
Sep 06 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
Dec 24 Javascript
js微信应用场景之微信音乐相册案例分享
Aug 11 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
Dec 27 Javascript
pm2启动ssr失败的解决方法
Jun 29 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
Dec 06 Javascript
element-ui中el-upload多文件一次性上传的实现
Dec 02 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 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
php中session使用示例
2014/03/29 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
2008/10/29 Javascript
点击文章内容处弹出页面代码
2009/10/01 Javascript
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
jQuery EasyUI封装简化操作
2016/09/18 Javascript
React实现双向绑定示例代码
2016/09/19 Javascript
概述BootStrap中role="form"及role作用角色
2016/12/08 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
vue 对象添加或删除成员时无法实时更新的解决方法
2019/05/01 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
js实现微信聊天界面
2020/08/09 Javascript
python用字典统计单词或汉字词个数示例
2014/04/22 Python
简单谈谈Python中的json与pickle
2017/07/19 Python
python抽取指定url页面的title方法
2018/05/11 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
python让列表倒序输出的实例
2018/06/25 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
深入浅析python的第三方库pandas
2020/02/13 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
如何用Matlab和Python读取Netcdf文件
2021/02/19 Python
英国婴儿和儿童服装网站:Vertbaudet
2018/04/02 全球购物
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
C#笔试题
2015/07/14 面试题
会议通知范文
2015/04/15 职场文书
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL