Sto lavorando su un sito Web mobile che deve funzionare su una varietà di dispositivi. Quello che mi sta facendo venire il mal di testa al momento è BlackBerry.
Dobbiamo supportare sia i clic della tastiera sia gli eventi touch.
Idealmente userei solo:
$thing.click(function(){...})
ma il problema che stiamo riscontrando è che alcuni di questi dispositivi Blackberry hanno un ritardo molto fastidioso dal momento del tocco ad innescare un clic.
Il rimedio è invece usare il touchstart:
$thing.bind('touchstart', function(event){...})
Ma come faccio a legare entrambi gli eventi, ma solo sparandone uno? Ho ancora bisogno dell'evento click per i dispositivi a tastiera, ma ovviamente non voglio che l'evento click venga attivato se sto usando un dispositivo touch.
Una domanda bonus: esiste comunque un modo per farlo e ospitare anche i browser che non hanno nemmeno un evento touchstart? Nella ricerca di questo, sembra che BlackBerry OS5 non supporti il touchstart, quindi dovrà anche fare affidamento sugli eventi di clic per quel browser.
APPENDICE:
Forse una domanda più completa è:
Con jQuery, è possibile / consigliato gestire entrambe le interazioni tattili e le interazioni del mouse con gli stessi binding?
Idealmente, la risposta è sì. In caso contrario, ho alcune opzioni:
1) Utilizziamo WURFL per ottenere informazioni sul dispositivo in modo da poter creare la nostra matrice di dispositivi. A seconda del dispositivo, utilizzeremo il touchstart O il clic.
2) Rileva il supporto touch nel browser tramite JS (ho bisogno di fare qualche ricerca in più su questo, ma sembra che sia fattibile).
Tuttavia, ciò lascia ancora un problema: che dire dei dispositivi che supportano ENTRAMBI. Alcuni dei telefoni supportati (ovvero Nokias e Blackberry) sono dotati sia di touchscreen che di tastiere. Quindi quel tipo di mi riporta al punto di partenza alla domanda originale ... c'è un modo per consentire entrambi contemporaneamente in qualche modo?
.bind('touchstart mouseup')
lo risolverà (basato su uno dei commenti seguenti)