(网页)触摸事件的处理 文章转载

http://www.cnblogs.com/pifoo/archive/2011/05/23/webkit-touch-event-1.html

(这篇内容不转了)

 

http://backtothecode.blogspot.com/2009/10/javascript-touch-and-gesture-events.html

JavaScript Touch and Gesture Events iPhone and Android

内容如下:

 

There are quite a few sites that describe the touch and gesture events that can be used in the mobile version of WebKit running on iPhone and iPod Touch. There is, however, not so much info with regards to Android. I’ve placed a few links at the bottom of this article that contain information used to compile this brief explanation.Touch events are a bit like mouse events, but there are some very important differences when it comes to touch vs. mouse:

  • A touch is very hard to keep steady whilst a mouse can stay at a fixed position – this means that we go from a touchStart event directly to a touchMove event. Unlike a mouse where a mouseDown event is likely to fire without being followed up by a mouseMove event.
  • There is no mouseOver equivalent since a touch can be discontinuous, i.e., we can get from point A to point B without the need of drawing a continuous line between these points.
  • A touch is an averaged point taken from the surface area in contact with the pointing device (your finger) translated to pixel coordinates – like finding the centre of a circle. A mouse is very precise and there is no averaging that needs to be done. What I’m trying to say is that a touch is not as accurate as a mouse.

Android and iPhone touch events

Android and iPhone versions of WebKit have some touch events in common:

  • touchstart – triggered when a touch is initiated. Mouse equivalent – mouseDown
  • touchmove – triggered when a touch moves. Mouse equivalent – mouseMove
  • touchend – triggered when a touch ends. Mouse equivalent – mouseUp. This one is a bit special on the iPhone – see below
  • touchcancel – bit of a mystery

Example:

The Event object

As you may have noticed above, the event object contains an array called touches (in Androids case, the event object also containes a touch object – at this stage, touches has always a length of 1 in Android so event.touches[0] === event.touch). The touches array is Apples way of handling multi-touch events – but more on that later.

A touch object contains pretty much the same data as a mouse event such as pageX, pageY etc…

Example:

What about a click?

mouseClick events are triggered after a touchStart, touchEnd event sequence. A reason for mouseClick events not triggering can be that the event propagates further and a touchMove being initiated – this will cancel the mouseClick event sequence.

iPhone Touch and Gesture Events

Apples WebKit implementation has a few things that are different from the Android implementation. The touchEnd event removes the current touch from the event.touches array. Instead, we have to look inside the event.changedTouches array.

Apples event object for touch events

The event object contains the following arrays:

  • touches – contains touch information upon touchStart and touchMove not touchEnd events
  • targetTouches – contains information for touches originating from the same target element
  • changedTouches – contains touch information upon all touch events

Gesture events

Apple supports gestures which are mult-touch events such as “pinching” and “rotating”:

  • gesturestart – triggered when initiating a multi-touch event
  • gesturechange – triggered when multiple touches move
  • gestureend – triggered when a multi-touch event ends

The event object for gesture events looks very different. It contains scale and rotation values and no touch objects.

Example:

Event table

touch

start

touch

move

touch

end

gesture

start

gesture

move

gesture

end

Androidyyynnn
iPhoneyyyyyy
has event.touchesyyynnn
(iPhone) has event.scale and event.rotationnnnyyy
(iPhone) touch in event.touchesyyn
(iPhone) touch in event.changedTouchesyyy

Links

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注