触屏中的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的函数
Jan 31 Javascript
解决jquery异步按一定的时间间隔刷新问题
Dec 10 Javascript
js拆分字符串并将分割的数据放到数组中的方法
May 06 Javascript
js实现a标签超链接提交form表单的方法
Jun 24 Javascript
js图片卷帘门导航菜单特效代码分享
Sep 10 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
Nov 06 Javascript
vue封装第三方插件并发布到npm的方法
Sep 25 Javascript
详解ajax的data参数错误导致页面崩溃
Apr 30 Javascript
解决node-sass偶尔安装失败的方法小结
Dec 05 Javascript
一个因@click.stop引发的bug的解决
Jan 08 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
Apr 23 Javascript
vue-element-admin 菜单标签失效的解决方式
Nov 12 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中路径问题的解决方案
2006/10/09 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
2017/05/17 PHP
半角全角相互转换的js函数
2009/10/16 Javascript
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
jQuery插件uploadify实现ajax效果的图片上传
2016/06/18 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
2016/12/23 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
python使用分治法实现求解最大值的方法
2015/05/12 Python
在Python中操作字典之update()方法的使用
2015/05/22 Python
pygame加载中文名mp3文件出现error
2017/03/31 Python
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
简单谈谈python基本数据类型
2018/09/26 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
Python List cmp()知识点总结
2019/02/18 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
Python实现平行坐标图的绘制(plotly)方式
2019/11/22 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
html5教程制作简单画板代码分享
2013/12/04 HTML / CSS
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
农村党支部先进事迹
2014/01/14 职场文书
向女朋友道歉的话
2015/01/20 职场文书
2015年电教工作总结
2015/05/26 职场文书