触屏中的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 设计模式学习 Singleton
Jul 27 Javascript
js apply/call/caller/callee/bind使用方法与区别分析
Oct 28 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
Aug 27 Javascript
JQuery实现级联下拉框效果实例讲解
Sep 17 Javascript
jquery实现二级导航下拉菜单效果
Dec 18 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
Jun 07 Javascript
JavaScript编码风格指南(中文版)
Aug 26 Javascript
JavaScript实现简单生成随机颜色的方法
Sep 21 Javascript
最简单的JS实现json转csv的方法
Jan 10 Javascript
vue+php实现的微博留言功能示例
Mar 16 Javascript
react 生命周期实例分析
May 18 Javascript
vant中的toast轻提示实现代码
Nov 04 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
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
php若干单维数组遍历方法的比较
2011/09/20 PHP
PHP中extract()函数的定义和用法
2012/08/17 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
php 中的closure用法详解
2017/06/12 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
一个简单的js鼠标划过切换效果
2010/06/30 Javascript
表单验证的完整应用案例探讨
2013/03/29 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
基于Bootstrap分页的实例讲解(必看篇)
2017/07/04 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
JavaScript判断日期时间差的实例代码
2018/03/01 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
写了个监控nginx进程的Python脚本
2012/05/10 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
python GUI模拟实现计算器
2020/06/22 Python
CSS3制作皮卡丘动画壁纸的示例
2020/11/02 HTML / CSS
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
委托与事件是什么关系?为什么要使用委托
2014/04/18 面试题
介绍一下Ruby的特点
2013/01/20 面试题
一套Delphi的笔试题二
2013/05/11 面试题
大一自我鉴定范文
2013/12/27 职场文书
情人节活动策划方案
2014/02/27 职场文书
婚纱摄影师求职信范文
2014/04/17 职场文书
市政管理求职信范文
2014/05/07 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
利用html+css实现菜单栏缓慢下拉效果的示例代码
2021/03/30 HTML / CSS
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers