以前は、デバイスが 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)
理想とは程遠い…