5.触摸屏和移动设备事件
介绍运行在Apple的iphone和ipad设备上的Safari所产生的手势和触摸事件,还包括用户旋转这些设备时锁产生的orientationchange事件。---横屏竖屏转换触发,window对象的orientation属性给出当前方位,0,90,180,-90.
1)
手势开始:gesturestart
手势结束:gestureend。
在这两个事件之间是跟踪手势过程的gesturechange事件队列。
传递事件对象的数字属性scale和rotation.
scale:两个手指之间当前距离和初始距离的比值。<1.0........>1.0;
rotation:从事件开始手指旋转的角度,以度为单位,正值是顺时针方向。
2)
手指触摸 : touchstart
手指移动:touchmove,
手指离开:touchend ,
事件对象有 changedTouches属性。类数组对象,都描述触摸的位置。
而每个触摸事件都包括了三个触摸列表,每个列表里包含了对应的一系列触摸点(用来实现多点触控):
touches:当前位于屏幕上的所有手指的列表。
targetTouches:位于当前DOM元素上手指的列表。
changedTouches:涉及当前事件手指的列表。
每个触摸点由包含了如下触摸信息(常用):
identifier:一个数值,唯一标识触摸会话(touch session)中的当前手指。一般为从0开始的流水号(android4.1,uc)
target:DOM元素,是动作所针对的目标。
pageX
/pageX
/clientX
/clientY/screenX/screenY
:一个数值,动作在屏幕上发生的位置(page包含滚动距离,client不包含滚动距离,screen则以屏幕为基准)。
radiusX
/radiusY/
rotationAngle:画出大约相当于手指形状的椭圆形,分别为椭圆形的两个半径和旋转角度。
/*单指拖动*/ var obj = document.getElementById(‘id‘);obj.addEventListener(‘touchmove‘, function(event) {
// 如果这个元素的位置内只有一个手指的话if (event.targetTouches.length == 1) {
event.preventDefault();// 阻止浏览器默认事件,重要var touch = event.targetTouches[0]; // 把元素放在手指所在的位置obj.style.left = touch.pageX-50 + ‘px‘;obj.style.top = touch.pageY-50 + ‘px‘;} }, false);
3)、重力感应重力感应较简单,只需要为body节点添加onorientationchange事件即可。在此事件中由window.orientation属性得到代表当前手机方向的数值。window.orientation的值列表如下:
0:与页面首次加载时的方向一致
-90:相对原始方向顺时针转了90°
180:转了180°
90:逆时针转了90°据我测试,Android2.1尚未支持重力感应。以上即目前的触屏事件,这些事件尚未并入标准,但已被广泛使用。本人Android2.1,未在其他环境下测试。