Próbuję zrozumieć, jak różne zdarzenia wskaźnika (dotyk, mysz) są uruchamiane w różnych przeglądarkach/na różnych urządzeniach. W tym celu napisałem niewielką stronę internetową do testowania wydarzeń http://tstr.29pixels.net.Różnica między zdarzeniem zdarzeń wskaźnika w jQuery a zwykłym JavaScriptem
Kilka tygodni później natknąłem się na stronę testową zdarzeń słuchacza Mozilli pod numerem http://mozilla.github.io/mozhacks/touch-events/event-listener.html, która dała bardzo różne wyniki (widziałem zdarzenia, które nie były wyświetlane w moim oryginalnym narzędziu testowym).
Obie strony używają różnych stylów wiążących wydarzeń, więc chciałbym wiedzieć, gdzie jest różnica w wiązaniu tych wydarzeń?
Na przykład podnieś swój tablet/smartfon za pomocą Chrome i spróbuj kliknąć przycisk w mojej sieci. W większości przypadków wystrzeliwane są dwa zdarzenia - dotykowy i dotykowy (z okazjonalnym dotknięciem dotykowym). Następnie wypróbuj narzędzie Mozilli. Jest o wiele więcej (nawet włączając kliknięcie).
My wiązania: wiązanie
$("#button").on('mouseenter mouseleave ... mousemove click', function(e){
...
}
Mozilla:
var events = ['MSPointerDown', 'MSPointerUp', ... , 'MSPointerCancel'];
var b = document.getElementById('button');
for (var i=0; i<events.length; i++) {
b.addEventListener(events[i], report, false);
}
Są to tylko najważniejsze części, pełny kod javascript jest napisane w prawo na stronie indeksu obu stronach (to nie długo).
Jeśli ktoś mógłby mi w tym pomóc, byłbym bardzo wdzięczny.
Dziękujemy! Usunąłem 'e.preventDefault()' (i zaktualizowałem nieco listę zdarzeń), a teraz mam te same wyniki co narzędzie Mozilla. Poczytaj więcej o działaniu 'e.preventDefault()'. –
@ PavelAntolík Niestety obecnie nie znam opisu, który opisuje, w jaki sposób 'preventDefault' wpływa na inne zdarzenia. '[...] ale w wyniku tego zapobiegnie wystąpieniu pewnego innego zdarzenia." może być trochę mylące. Może to uniemożliwić zachowanie przeglądarki, a to zachowanie może skutkować innymi zdarzeniami. Zdarzenie 'click' na urządzeniach dotykowych jest emulowanym zdarzeniem, a jeśli zapobiegniesz zdarzeniu dotykowemu, domyślne zachowanie emulowania" kliknięcia "zostanie uniemożliwione. Ale szczerze mówiąc nie wiem, czy emulacja jest objęta standardem, czy też 'preventDefault' powinna temu zapobiec. –