javascriptjquerytouchtablet

How to determine if the client is a touch device


is there any nice and clean method or trick to find out if the user is on a touch-device or not?

I know there is stuff like var isiPad = navigator.userAgent.match(/iPad/i) != null;

but I simply wonder if there is a trick to generally determine if the user is on Touch device? Because there are a lot more touch devices and tablets out there then just iPads.

thank you.


Solution

  • You can use the following JS function:

    function isTouchDevice() {
       var el = document.createElement('div');
       el.setAttribute('ongesturestart', 'return;'); // or try "ontouchstart"
       return typeof el.ongesturestart === "function";
    }
    

    Source: Detecting touch-based browsing.

    Please note the above code only tests if the browser has support for touch, not the device.

    Related links:

    There may be detection in jquery for mobile and jtouch