Tworzę witrynę mobilną, która korzysta z wydarzeń dotykowych JavaScript. Wszystko działa dobrze w Safari na iOS i Chrome na Androida, ale wersja Android Browser (wersja 4.1.2) sprawia mi kłopoty.Wyłącz wypalanie touchcancel w przeglądarce Androida
Podczas procesu dotykowego zdarzenia o nazwie touchstart
i touchmove
są wywoływane zgodnie z oczekiwaniami. Jednak jedna z akcji wykonywanych przez program obsługi touchmove
wydaje się powodować przedwczesne zdarzenie touchcancel
. (Nie jestem pewien, czy jest to znaczące, ale akcja, która wyzwala touchcancel
, jest modyfikacją atrybutu obiektu SVG o wartości viewBox
.) Jeśli skomentuję tę akcję, proces dotykowy przebiega normalnie (tj. Zakończenie touchmove
do touchend
).
Wszystkie moje programy do obsługi dotykowej wywołują funkcję preventDefault()
, więc problem nie jest tym, który został opisany w tym błędzie: https://code.google.com/p/android/issues/detail?id=19827.
Przeczytałem, że jest dużo inconsistency among browsers, kiedy jest wywoływana touchcancel
. Przeglądarka plików Android jest jedyną, która jest dla mnie problematyczna.
Czy istnieje obejście? Czy na przykład mogę całkowicie wyłączyć wydarzenie touchcancel
? Innym pomysłem, który miałem, było to, aby program obsługi touchcancel
programowo wyzwalał kolejne wydarzenie, ale nie za bardzo się z tym uporałem. Wszelkie pomysły będą mile widziane.
Argh! Myślę, że problem ten został przeniesiony do przeglądarki Chrome! Pojawił się w wersji 28. Zobacz https://code.google.com/p/chromium/issues/detail?id=260732. –
Zobacz także ten wpis, który wydaje się być powiązany: http://stackoverflow.com/questions/15944197/android-browser-touchcancel-being-fired-althought-touchmove-has-preventdefault –
Występuje ten problem w Chrome Przeglądarka teraz ingeruje w użycie pliku Hammer.js. Czy ktoś wie, jak sobie z tym poradzić? – acjay