Touch table

Last major update on 29 January 2014. I used this test page.

See also the full list of mobile JavaScript events.

Back to the mobile homepage.

On this page I present the results of my touch action research. I concentrated on the few basic actions that users will want to take: clicking on a link, scrolling, zooming, as well as sliding their fingers more-or-less aimlessly.

Action
Something the user does, like tapping the screen or sliding his finger in order to scroll.
Event
A JavaScript event that fires in reaction to a user action.
Event cascade
Since mouse events are meaningless on touchscreen devices but still have to be supported because so many websites rely on them, touchscreen browsers tend to fire large numbers of events in reaction to a single tap action.
In theory only a single tap action should trigger a full cascade with all touch and mouse events. All other actions should trigger only the touch events and specialised events such as scroll.

Events

Here is compatibility data for individual events. Most of them fire more-or-less as you’d expect on a touchscreen, where mouse events do not make sense but must be emulated anyway because they’re used so widely on the Web.

The only real problem is the contextmenu event, which would be very useful as a proxy for a touchhold action. Unfortunately it’s badly supported.

iOS Android Chrome Opera BlackBerry Nokia UC Puffin Nintendo Dolphin Tizen One IE 10 Firefox
6 7 2 4 28 31 Mini Mob 12 Mob 18 6 7 10 Xpress MeeGo Anna Belle Mini 8 9 OS And
Touch events

Touchstart, touchmove, touchend

Yes Yes Yes No Yes Yes No Yes No Yes No Yes No Yes No Yes

Basic support for Apple’s touch events.

MS touch events

pointerdown, pointermove, pointerup

No No No No No No No No Yes No

Basic support for Microsoft’s touch events.

Legacy mouse I

mousedown, mousemove, mouseup

Yes Yes Yes Yes Yes incomplete Yes Minimal Yes Yes Yes Yes
  • Xpress fires only mousedown in the click test.
  • UC Mini fires these events only on links.
Legacy mouse IIa

mouseover, mouseout

Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes

Mouseover fires in the touch cascade. Mouseout fires when the user touches another element.

iOS Android Chrome Opera BlackBerry Nokia UC Puffin Nintendo Dolphin Tizen One IE 10 Firefox
6 7 2 4 28 31 Mini Mob 12 Mob 18 6 7 10 Xpress MeeGo Anna Belle Mini 8 9 OS And
Legacy mouse IIb

mouseenter, mouseleave

No Yes No No Yes No No No No No Yes Yes

Relatively new events (except in IE). With an actual they’re wonderful, but on touchscreens they makes as little sense as mouseover and mouseout.

click
Yes Yes Yes Yes Yes Yes Minimal Yes Yes Yes Yes
  • UC Mini fires the click event only on links.
scroll
One Yes Yes No One Yes One ? Yes No One No Yes weird Yes Yes Yes

Should the browser fire one scroll event when scrolling ends, or a lot of them while scrolling continues? I count the second as “right,” but mostly because most browsers do so, and not because I think lots of scroll events are inherently superior.

One
Browser fires one event at the end of the scroll action.
  • BlackBerry 7 can’t make up its mind on whether to fire one or many events.
  • Puffin fires the event only on pinch-zoom; and not when the user scrolls.
contextmenu
No No Yes No Yes No Yes No No Yes No No No Yes No

Could be useful as a kind of touchhold event, but works in too few browsers.

iOS Android Chrome Opera BlackBerry Nokia UC Puffin Nintendo Dolphin Tizen One IE 10 Firefox
6 7 2 4 28 31 Mini Mob 12 Mob 18 6 7 10 Xpress MeeGo Anna Belle Mini 8 9 OS And

Actions

Below are the expected and actual reaction of the browsers when the user performs one of the fundamental actions. The expected reactions are mostly taken from Safari, which was the first browser to implement them, and whose model makes sense. The models espoused by some other browsers make less sense.

Although the table may give an impression of chaos and disaster, in practice the situation is not so bad. The legacy mouse events always fire when the user taps an element, and that’s by far the most important thing that should happen. Although, for instance, Android 4’s insistence on always firing mouseover and mousemove events, and doing so before touchstart, is strictly speaking a slight problem, the practical implications are almost nil.

So don’t worry too much. The actions below do what you’d expect in most browsers.

iOS Android Chrome Opera BlackBerry Nokia UC Puffin Nintendo Dolphin Tizen One IE 10 Firefox
6 7 2 4 28 31 Mini Mob 12 Mob 18 6 7 10 Xpress MeeGo Anna Belle Mini 8 9 OS And
click action
Expected cascade:
touchstart
touchend
(mouseenter)
mouseover
mousemove
mousedown
mouseup
click
Yes Yes Almost Yes Yes Almost Yes Incorrect Almost No touch Almost No Yes Almost No touch Yes Almost Yes Almost Incorrect Yes

If the user touches an element once the expected event cascade should take place. I found the following deviations:

  • The proxy browsers, Symbian Anna, and Puffin do not fire the touch events. This is expected behaviour in the case of the proxy browsers.
  • Android 4, UC9, Dolphin, and One fire mouseover and mousemove before touchstart.
  • BB6 and 7 fire the touchend event around the end of the cascade.
  • Xpress fires mouseover, focus, mousedown, click.
  • MeeGo fires mouseup after click.
  • Symbian Belle fires the touchend after the click.
  • IE10’s cascade: mousemove - mouseover - pointerdown - mousedown - focus - pointerup - mouseup - mouseout - mouseleave - click
click action on other element
Expected cascade:
(mouseleave)
mouseout
Yes Yes Yes Not sure Yes Yes Yes No Yes Yes Incorrect Yes

When the user touches another element, the expected event cascade should fire on the original element.

  • In Opera Mini the mouseout event sometimes flashes by, but they're not in the official replay, so I’m not sure what’s happening.
  • IE10 fires the blur event only.
iOS Android Chrome Opera BlackBerry Nokia UC Puffin Nintendo Dolphin Tizen One IE 10 Firefox
6 7 2 4 28 31 Mini Mob 12 Mob 18 6 7 10 Xpress MeeGo Anna Belle Mini 8 9 OS And
double-tap action
Expected:
touchstart
touchend
(repeat)
scroll
(resize)
Yes Yes Almost Almost No Yes Almost Incomplete No Yes No Almost mouse Yes No mouse Almost vague Almost Incorrect Almost

When a user double-taps on an element the touch events should fire twice, but the mouse events should be suppressed. When the zooming in on the element occurs, the scroll event always fires and the resize event may fire.

  • BlackBerry 7 and UC do not support the double-tap action.
  • Android 4 and Dolphin do not suppress the mouseover and mousemove events.
  • The Blink browsers do not repeat the touch events.
  • BlackBerry 6 fires mouseover, -out, -down, and -move, but not -up. Also, the scroll event does not fire.
  • MeeGo fires an extra resize event at the start.
  • Symbian Anna doesn’t support the touch events and instead fires mouseover - mousemove - mouseout.
  • Puffin doesn’t support the touch events and instead fires mouseover - mousemove - mousedown - mouseup - click.
  • Nintendo fires the touch events once and tacks on a touchmove event.
  • Tizen doesn’t always fire events and does not suppress the mouse events.
  • One does not suppress the mouseover and mouseout events.
  • IE10 fires the single-tap cascade twice.
  • Firefox adds an extra touchmove.
Pinch-zoom action
Yes Yes Almost Yes No Yes Almost Yes - Yes No Yes Almost Yes - Yes Almost Incorrect Yes

When the user pinch-zooms the touch events (and gesture events) should fire, but the mouse events should be suppressed. The browser always fires the scroll event and sometimes the resize event.

  • The proxy browsers do not support pinch-zooming.
  • Android 4, UC 9, Dolphin, and One do not suppress the mouseover and mousemove events.
  • The Samsung Note I does not fire a touchend event. The LG and Samsung G3 fire the touchend event after the scroll event. (Not counted as bug.)
  • The Blink browsers fire touchcancel instead of touchend. (Not counted as bug.)
  • BlackBerry 6 and 7 fire the mouseover, -out, -down, and -move events, but BB7 does not fire not mouseup.
  • IE10 fires the same cascade as with a single tap.
Scroll action
Yes Yes Almost Yes No Yes Almost Yes No Yes No Almost No Yes Almost Yes Almost Almost Yes

When the user scrolls the touch events and scroll event should fire, while the mouse events should be suppressed.

  • Android 4, UC 9, Dolphin, and One do not suppress the mouseover and mousemove events.
  • BlackBerry 6 and 7 and UC 8 fire the mouseover, -out, -down, and -move events.
  • IE10 fires the same cascade as with a single tap, with the scroll event tacked on.
iOS Android Chrome Opera BlackBerry Nokia UC Puffin Nintendo Dolphin Tizen One IE 10 Firefox
6 7 2 4 28 31 Mini Mob 12 Mob 18 6 7 10 Xpress MeeGo Anna Belle Mini 8 9 OS And

Browsers

Mobile browser test array 1.2.5; January 2014

iOS 6
WebKit 536
Default browser on iPhone 4S with iOS 6.1.3
iOS 7
WebKit 537
Default browser on iPad 2 with iOS 7.0.4
Android 2
WebKit 533
Default browser on HTC Legend, Android 2.2
Default browser on Samsung Galaxy Pocket, Android 2.3.6
Android 4
WebKit 534
Default browser on Xiaomi M2, Android 4.1.1
Default browser on Huawei C8813, Android 4.1.1
Default browser on Samsung Galaxy Note I, Android 4.1.2
Default browser on Sony Xperia S, Android 4.1.2
Default browser on LG L5, Android 4.1.2
Default browser on Samsung Galaxy S3, Android 4.1.2
Default browser on HTC One X, Android 4.2.2
Chrome 28
Blink
Default browser on Samsung Galaxy S4, Android 4.3
It will be interesting to see if Samsung’s purported Chrome 18 is really the real Chrome 28.
Chrome 31
Blink
On HTC One X, Android 4.2.2
On Nexus 7, Android 4.4
Opera Mini
Presto
Proxy browser
7.0.5 on iPad 2, iOS 7.0.3
7.1 on BlackBerry 9800 (OS6)
7.1 on Nokia PureView 808, Symbian Belle
7.5 on Samsung Galaxy Note I, Android 4.0.3
Opera Mobile 12
Presto
12.00 on Nokia E7, Symbian Anna
12.10 on Samsung Galaxy Pocket, Android 2.3.6
Opera Mobile 18
Blink (Chromium version not given; likely 30 or 31)
On Sony Xperia S, Android 4.1.2
On Nexus 7, Android 4.3
BlackBerry 6
WebKit 534
Default browser on BB Torch 9800 (OS6)
BlackBerry 7
WebKit 534
Default browser on BB Torch 9810 (OS7)
BlackBerry 10
WebKit 537
Default browser on BlackBerry Z10 (BB OS 10.1)
This device has 1GB of internal memory instead of the customary 2GB, which may matter in performance tests.
Xpress
Gecko 20100401; this version was used for some Firefoxes from 3 to 4.
Proxy browser
3.9 on the Nokia Asha 311, S40.
This browser used to be called Ovi. Nokia developed it because it saw how succesful Opera was on Nokia’s own devices.
MeeGo
WebKit 534
Default browser on Nokia N950, MeeGo Harmattan 1.2
Originally slated as Symbian’s successor, MeeGo was ousted in favour of Windows Phone. Some devices were sold, however, and a Finnish company is trying to re-start MeeGo under the name Sailfish. Also, rumour has it that Nokia is quietly hiring back ex-MeeGo people, so a Nokia-based restart is not entirely impossible.
Anna
WebKit 533
Default browser (7.3) on Nokia E7, Symbian Anna
The next-to-last Symbian build. I don’t think it was the prime Symbian build for long; it was replaced by Belle fairly soon. But it’ll be in some people’s pockets.
Belle
WebKit 535
Default browser (8.3) on Nokia PureView 808, Symbian Belle FP2
The most recent Symbian build.
UC Mini
Gecko; don’t know version number
Proxy browser
8.8 on HTC One X, Android 4.2.2
UC
WebKit 534
UC 8.5.1 on Xiaomi M2 (Android 4.1.1)
UC 9.2.3 on Huawei C8813 (Android 4.1.1)
The largest Chinese browser. This is the full variant, not the proxy. These browsers were pre-installed (next to Android WebKit; don’t ask me why).
Puffin
WebKit 534
2.1 Free Edition on Samsung Galaxy Note, Android 4.0.3
Claims to be Chrome 11
Nintendo
WebKit 536
Nintendo browser 2.0.0 on Wii U 4.0.0
Supposed to be based on NetFront.
Dolphin
WebKit 534
Dolphin 10 with JetPack on Sony Xperia S, Android 4.1.2.
Independent full browser for Android, as long as you install both Dolphin 10 and the Jetpack extension.
QQ One
WebKit 533
4.2.2 on HTC One X, Android 4.2.2
This is the downloadable, international browser TenCent created.
Tizen
WebKit 537
Default browser on Ref.Device-PQ by Samsung; Tizen 2.2
Tizen is an OS jointly being developed by Samsung and Intel. I expect Samsung to start producing devices this year, and it will get a few percent of market share.
IE10
Trident
Default browser on Nokia Lumia 820, Windows Phone 8.0.
Firefox OS
Gecko 18
Geekphone/Telefónica (Peak and/or qcom); Boot2Gecko 1.0.1.0-prerelease
Default browser on ZTE Open, FF OS 1.0.0802
The ZTE Open will get an upgrade to 1.1 pretty soon.
Firefox Android
Gecko 25
25 on Samsung Galaxy Pocket, Android 2.3.6
25 on HTC One X, Android 4.2.2