In passato, quando rileva se un dispositivo supporta eventi touch in JavaScript, potremmo fare qualcosa di simile:Come posso rilevare il supporto tattile del dispositivo in JavaScript?
var touch_capable = ('ontouchstart' in document.documentElement);
Tuttavia, Google Chrome (17.x.x +) restituisce true
per il controllo di cui sopra, anche se il dispositivo sottostante non supporta gli eventi di tocco. Ad esempio, l'esecuzione del codice di cui sopra su Windows 7 restituisce true, e, quindi, se si combinano con qualcosa di simile:
var start_evt = (touch_capable) ? 'ontouchstart' : 'onmousedown';
Su Google Chrome, l'evento viene mai sparato dal momento che stiamo legame ontouchstart
. In breve, qualcuno sa un modo affidabile per aggirare questo? Sono attualmente in esecuzione il seguente controllo:
var touch_capable = ('ontouchstart' in document.documentElement && navigator.userAgent.toLowerCase().indexOf('chrome') == -1)
Che è ben lungi dall'essere ideale ...
Corretto - mentre ho (e amo) un tablet PC, a volte ho un mouse e non ho paura di usarlo. –
Grazie. Questo è in realtà per un plugin jQuery, e preferirei non aggiungere il pre-requisito di Modernizr. Tuttavia, per qualche ragione 'window.DocumentTouch && document instanceof di DocumentTouch' restituisce' undefined' ... – BenM
@BenM sai che è possibile creare un download personalizzato di Modernizr che includa solo i test necessari? – Alnitak