
You can't detect a touchscreen - Isofarro
http://www.stucox.com/blog/you-cant-detect-a-touchscreen/
======
dsl
I really hate when people say you can't do something. It usually boils down to
a lack of imagination on the part of the author.

* 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.

------
cheald
So, is any of this actually backed with usability studies, or is it just
pontificating?

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.

~~~
hdragomir
It's not about audience. You can implement all those "gestures" but only as
shortcuts to functions that can be accessed in other fashions as well.

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. :-)

------
crazygringo
Related: what _verb_ are we supposed to use now, for click/touch?

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?

~~~
bitwize
_But what do we write when the user could be using either, for example on
Windows 8?_

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."

~~~
rlu
I was actually going to reply to the parent and say that Windows 8 often times
tells me to "click or tap". Can you give an example of somewhere in Windows 8
where it says to only tap?

------
zimpenfish
JS API sniffing is the new User Agent sniffing.

How far we've come in 20 years.

~~~
sageikosa
<deadpan>HTML5 will save us from vendor-specific differentiating
capabilities.</deadpan>

~~~
stucox
I'm trying to style the <deadpan> tag with CSS3 `sarcasm: loads`, but it's not
working in IE7?

------
leeoniya
tangentially, you also cannot detect the number of thread-able cores for
tweaking webworker spawns

~~~
stucox
Gah, forgot to mention that. I'd better write it again...

------
TazeTSchnitzel
Just make a page that's both touch and mouse-friendly. If you do that, support
for people who don't have fine motor control, and support for pen input, is
included.

~~~
bitwize
At a former job we used to have a Just Jar, into which any programmer who said
"why don't we just..." followed by something which is or may be nontrivial
would have to put cash. Eventually the Just Jar's contents would be emptied
out and used to buy a couple of rounds of beers. I heard that was actually
fairly frequent at one time...

~~~
TazeTSchnitzel
You seem to be implying making a touch-friendly interface is difficult. I made
a touch-friendly interface for one of my websites by accident: making the
buttons slightly bigger was all that was needed.

------
gbog
Oh I so wish someone in Google+ team would hear the stance about hover, and
why to avoid them. When I want to follow an author of a post, I have to play
maze with my mouse, and often I just abandon the task in the middle.

------
mildweed
Great article, as was the one before it. You should keep writing AND add an
RSS feed so I can subscribe.

------
_pmf_
Ah, the web. Repeating the issues from 2000 over and over again.

------
zepolen
What if you put an invisible div on the entire page with an onmouseover
trigger which means that you will know that the device is not a touchscreen.

~~~
CognitiveLens
keyboard nav, screen readers - there are many ways of interacting with a non-
touch browser that will never fire onmouseover.

