Я использую:
if(window.MSPointerEvent){
//you are on IE10
}else if(window.PointerEvent){
//you are on IE11
}else if(window.TouchEvent){
//android and safari
}else{
//don't have touch events
}
Я проверял это на Android 2.3 и 4.4.2 и на iOS 7.1.Для IE я использовал то, что Microsoft рекомендует
Использование TouchEvent
работает только в том случае, если вы работаете на сенсорном устройстве;это не значит мобильное устройство.Для этого используйте регулярное выражение на userAgent
:
if(navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/iPhone/i)){
//you are on Android or iPhone
}
Но есть много других случаев, например Windows Phone и BlackBerry, поэтому я рекомендую использовать обнаружение мобильногоAPI .