Czy można rozpoznać zdarzenia dotykowe w przeglądarce Safari iPada za pomocą jQuery?
Użyłem zdarzeń mouseOver i mouseOut w aplikacji internetowej. Czy są jakieś podobne zdarzenia dla przeglądarki Safari na iPadzie, ponieważ nie ma takich zdarzeń jak mouseOut i mouseMove?
jquery
ipad
events
mobile-safari
jquery-events
Abhishek B.
źródło
źródło
Jeśli używasz jQuery 1.7+, jest to nawet prostsze niż wszystkie inne odpowiedzi.
źródło
$('#whatever').on('touchstart click', function(){ /* do something... */ });
$('#whatever').on({ 'touchstart' : function(ev){}});
,ev
wydaje się , że nie ma żadnych informacji o dotknięciach (dotknięcia, targetTouches lub zmienioneTouches)ev.originalEvent
.Najprostszym podejściem jest użycie biblioteki JavaScript z wieloma przyciskami, takiej jak Hammer.js . Następnie możesz napisać kod:
I możesz iść dalej. Obsługuje stuknięcie, dwukrotne stuknięcie, przeciągnięcie, przytrzymanie, przekształcenie (tj. Uszczypnięcie) i przeciągnięcie. Zdarzenia dotykowe są również uruchamiane, gdy wystąpią równoważne działania myszy, więc nie trzeba pisać dwóch zestawów procedur obsługi zdarzeń. Aha, i potrzebujesz wtyczki jQuery, jeśli chcesz móc pisać w jQueryish tak jak ja.
źródło
Korzystanie z funkcji touchstart lub touchchend sam nie jest dobrym rozwiązaniem, ponieważ jeśli przewiniesz stronę, urządzenie wykryje ją jako dotyk lub też dotknij. Zatem najlepszym sposobem na wykrycie zdarzenia stuknięcia i kliknięcia w tym samym czasie jest wykrycie zdarzeń dotykowych, które nie poruszają ekranu (przewijanie). Aby to zrobić, po prostu dodaj ten kod do swojej aplikacji:
Przetestowałem to i działa dobrze dla mnie na iPadzie i iPhonie. Wykrywa dotknięcie i łatwo rozróżnia przewijanie dotykowe i dotykowe.
źródło
Możesz użyć .on (), aby przechwycić wiele zdarzeń, a następnie przetestować dotyk na ekranie, np .:
źródło
.bind
jest przestarzałe. Powinieneś użyć.on
jQuery Core nie ma nic specjalnego, ale możesz przeczytać na jQuery Mobile Events o różnych zdarzeniach dotykowych, które działają również na urządzeniach innych niż iOS.
Oni są:
Zwróć też uwagę, że podczas zdarzeń przewijania (opartych na dotyku na urządzeniach mobilnych) urządzenia z systemem iOS zawieszają manipulację DOM podczas przewijania.
źródło
Trochę się martwiłem, że w moim projekcie używam tylko touchmove , ponieważ wydaje się, że uruchamia się tylko wtedy, gdy twój dotyk przesuwa się z jednego miejsca do drugiego (a nie przy pierwszym dotknięciu). Więc połączyłem go ze start-upem i wydaje się, że działa to bardzo dobrze w przypadku pierwszego dotyku i wszelkich ruchów.
źródło
document.getElementById("ttime").innerHTML = ((new Date()) - touchTime); touchTime = new Date();
Właśnie przetestowałem wtyczkę GitHub jQuery Touch Events firmy Benmajor dla wersji jQuery 1.4 i 1.7+. Jest lekki i doskonale współpracuje z obydwoma,
on
abind
jednocześnie zapewnia obsługę wyczerpującego zestawu zdarzeń dotykowych.źródło