В прошлом при обнаружении того, поддерживает ли устройство сенсорные события в JavaScript, мы могли бы сделать что-то вроде этого:
var touch_capable = ('ontouchstart' in document.documentElement);
Однако Google Chrome (17.x.x +) возвращает true
для вышеуказанной проверки, даже если базовое устройство не поддерживает события касания. Например, запуск вышеуказанного кода в Windows 7 возвращает true, и поэтому, если мы объединим его с чем-то вроде:
var start_evt = (touch_capable) ? 'ontouchstart' : 'onmousedown';
В Google Chrome событие никогда не запускается, так как мы привязываемся к ontouchstart
. Короче говоря, знает ли кто-нибудь надежный способ обойти это? В настоящее время я выполняю следующую проверку:
var touch_capable = ('ontouchstart' in document.documentElement && navigator.userAgent.toLowerCase().indexOf('chrome') == -1)
Что далеко от идеала...