You can't detect a touchscreen
stucox.com
stucox.com
* Hook document.onmousemove and track the number and location of movement events. If the mouse suddenly jumps around, you most likely have a touch event.
* Check the value of navigator.msMaxTouchPoints
* Pop a 0day on the client to get remote code execution, interrogate the devices attached to the USB bus looking for touch controllers.
etc.
The implicit advocation here is "design for the least common denominator". That means no hovers, no gestures, no secondary/tertiary clicks, no modified clicks, no long-presses, no multitouch, and big fat click targets that allow for lots of slop. That's all well and good until you realize that this leads to designs which are wildly inefficient on certain classes of devices and drive users away because the information density sucks and the interaction models are stunted. If you can get away with it without damaging your UX, then by all means, go for it. Device-agnostic design is awesome, but it's myopic to damage the UX for the vast majority of your userbase because someone might access your website on their XBox and use their Kinect to navigate it.
Know your audience and design appropriately. You're never going to design a perfectly futureproof website; make sure that your users today and tomorrow have a great experience, and then just keep iterating on that.
Don't make me have to middle click for something and make that the only way to perform said action.
The author even stresses this trend to focus too much on providing great interfaces for mobile and not for other platforms. :-)
"Know your audience and design appropriately."
Agreed. The aim of the post was to highlight that what people think they're using as a rock-solid feature detect is in fact seriously flawed.
If you understand those flaws and you're happy with them, great.
A couple months ago, I was writing a balloon-tutorial system for an app with a desktop and mobile version. The desktop version had to have commands like "click this, then click that". The mobile version, "touch this, then touch that." Often, the text was otherwise identical.
But what do we write when the user could be using either, for example on Windows 8? "Clicking" a link with your finger sounds strange -- there's nothing clicking. And "touching" something with your mouse seems equally strange, almost as if it implied moving the mouse but not clicking. "Press" works for buttons, but not menu items or links. "Activate" just seems weird. And writing out "touch/click" is just unwieldy.
What to do?
Windows 8 uses "tap" everywhere, which is infuriating for desktop users, who now know on which side Microsoft's bread is really buttered.
For the Web, usability guidelines have said since forever to avoid phrases like "click here", because you have no way of knowing how your page is being viewed now or might be viewed in the future. They were blithely ignored by designers and marketroids.
Normally, when a verb is called for, I say "hit this link" or "follow this link"; for buttons and menu items I say "say". E.g., "Enter your IP address, netmask, and gateway and then say OK."
Saying that, most people will know what "click here" means, regardless of the input type, so I wouldn't lose sleep over it.
Links => "follow"
[Nested] Menus => "navigate to"
Buttons => "press"
Other => "select"
How far we've come in 20 years.
That's on my list of upcoming week-end projects: start some highly parallelizable task with an increasing number of workers, returns the number that works best.
I'm stealing that idea because it's GENIUS.
Sometimes, "just" really means "just swap plugins".
Sometimes, "just" really means "completely re-implement functionality".
I'm just saying, be careful how you use "just".