How to check browser for touchstart support using JS/jQuery?

Solution 1:

You can detect if the event is supported by:

if ('ontouchstart' in document.documentElement) {
  //...
}

Give a look to this article:

  • Detecting event support without browser sniffing

The isEventSupported function published there, is really good at detecting a wide variety of events, and it's cross-browser.

Solution 2:

Use this code to detect if the device supports touch.

Also work for windows 8 IE10 which uses 'MSPointerDown' event instead of 'touchmove'

var supportsTouch = false;
if ('ontouchstart' in window) {
    //iOS & android
    supportsTouch = true;

} else if(window.navigator.msPointerEnabled) {

    // Windows
    // To test for touch capable hardware 
    if(navigator.msMaxTouchPoints) {
        supportsTouch = true;
    }

}

Solution 3:

You could check if typeof document.body.ontouchstart == "undefined" to fall back to normal dom events

Solution 4:

I made a full demostration that works in every browser with the full source code of the solution of this problem: Detect touch screen devices in Javascript.