Up until recently, Firefox was the only Windows 7 browser which had support for multitouch. In a recent build, Chrome has also added experimental support. Unsurprisingly, they’ve used the same touch model used by mobile safari.
As of Chrome 21, the user is required to enable touch support. Within Chrome’s address bar, type about:flags. This will take you to a page which lets you enable/disable various features of Chrome. Near the bottom of the list you will find Enable touch events.
Note: Support is currently experimental, so expect bugs.Once you’ve done this, Chrome will pass touch events to your web application. Here’s a boring jsFiddle I wrote to test whether or not I was receiving touch event data.
Here’s a few interesting observations I made while testing this functionality:
- Chrome actually reports the width/height of the contact. It is in the webkitRadiusX, webkitRadiusY properties. On my machine, it always reported circular contacts (radiusX===radiusY) and never elliptical contact, even though I know my hardware supports ellipse. I don’t know if this is a limitation of Chrome or Windows 7.
- The touch events also have a webkitRotationAngle. This is supposed to represent the rotation of the ellipse defined by webkitRadiusX & webkitRadiusY. You can monitor this property to detect when a finger is rotated on the surface. Since my touches were being reported as perfect circles, this property was always 0 in my tests.
- The touch events also have a webkitForce property, but it was always 0 in my tests. Again, my hardware reports touch pressure so I do not know if this is a limitation of Windows 7 or Chrome.
- Once you enable touch events, the browser itself will not respond in anyway to touches.
- It does not produce pseudo mouse events so that older mouse-only web applications can be manipulated via touch.
- You can’t use your fingers to scroll
- Holding your finger down does not produce the context menu that you typically get if you have the default Windows gestures setup.
- Pinching does not zoom the browser
- If you are writing a real multitouch application, all of the above are actually good things–the browser does not try to interfere and you have complete control over the events. But if you are a user then most websites you visit that were written for a mouse just won’t respond to your touches–you’d be forced to use your mouse. I imagine this will change in future Chrome versions and application writers will need to call ev.preventDefault() to actively prevent the browser’s default response to touch events.
- Because the user must actively enable touch support, expect it to be mostly off out there in the wild right now. Again, I suspect this will change once touch support leaves its experimental status.
I’m still waiting to get access to a Windows 8 machine. I can’t wait to test and compare the multi-touch support of Firefox, Chrome and IE10 on Windows 8.