Mobilne przeglądarki symulują zdarzenia myszy, aby obsługiwać witryny internetowe, które dołączają jedynie programy obsługi do zdarzeń myszy. Jeśli jednak chcesz zaimplementować dwa modele interakcji - jeden dla zdarzeń myszy i jeden dla zdarzeń dotyku - to pomocne jest uniemożliwienie przeglądarce symulowania zdarzeń myszy.Jak zapobiegać symulowanym zdarzeniom myszy w przeglądarkach mobilnych?
iOS Safari to jest dość proste - wystarczy uruchomić preventDefault na touchend:
jQuery(document).on('touchend', function(e) {
// Do some logic
e.preventDefault();
});
To całkiem rozsądny. Niestety ani domyślna przeglądarka Androida, ani Dolfin nie anulują symulacji myszy za pomocą tej techniki. (Dolfin zrezygnuje z mousedown, gdy preventDefault zostanie uruchomiony na dotknięciu dotykowym - ale to nie jest zbyt pomocne, ponieważ nie wiesz, jaką akcję podejmie palec na touchstart.)
Czy jest jakiś inny sposób warunkowania, czy też nie warunkowego , zapobieganie strzelaniu symulowanym zdarzeniom myszy?
[EDIT]
Aby zacząć rozumieć problem (y) lepiej, zacząłem się zdarzenia dotykowe zgodności stolik w: http://labs.cruncher.ch/touch-events-compatibility-table/
Bardzo doceniane są również komentarze z doświadczenia z mobilnym Chrome lub FF. – stephband
Czy możesz wykryć, czy jest to przeglądarka mobilna, czy nie, przed podłączeniem zdarzeń myszy? –
@JaredFarrish Metody wykrywania przeglądarki mobilnej nigdy nie są w 100% dokładne. –