Jak zatrzymać propagację zdarzeń w pliku Hammer.js (2.0.2)? Technika zastosowana w odpowiednim teście (https://github.com/hammerjs/hammer.js/blob/master/tests/unit/test_propagation.js) nie ma zastosowania do wszystkich rodzajów zdarzeń. Jeśli zastąpisz zdarzenie "dotknij" przyciskiem "naciśnij", test się nie powiedzie.Jak zatrzymać propagację zdarzeń hammer.js
Odpowiedz
W swoim elemencie nadrzędnym sprawdź, co to jest event.target. Jeśli nie jest to element nadrzędny i jest ustawione na dziecko, zignoruj zdarzenie.
np .: jeśli (event.target! = Parent) { return; }
W celu rozwiązania tego problemu napisałem małą mixin przedłużenia hammer.js z propagacji zdarzenia:
Czy wiesz, jaka była motywacja do przepisania pliku hammer.js w ten sposób? dlaczego wydarzenia nie są ograniczone do DOM? – gipouf
Wydajność może być lepsza, jeśli masz tylko JS i brak DOM. I łatwiej jest budować bez konieczności liczyć się z DOM. Nie jest to również bardzo powszechny przypadek użycia propagacji zdarzeń i jest to pewien antytyp na rzecz delegowania zdarzeń, w którym pojedynczy rodzic przetwarza wszystkie zdarzenia. Ale czasami to * naprawdę * ułatwia życie. Może to być konieczne w przypadku posiadania samodzielnych komponentów. –
W swojej macierzystej dom wiążą kliknij zdarzenie i stopPropagation nim
- 1. JQuery UI; Zatrzymaj propagację zdarzeń do wyboru
- 2. Delegowanie zdarzeń Hammer.js za pomocą jQuery
- 3. Dlaczego model zdarzeń jQuery nie obsługuje przechwytywania zdarzeń i obsługuje tylko propagację zdarzeń
- 4. Jak zatrzymać odsłuchiwanie zdarzeń HTML w Dart?
- 5. Angular 2: Zatrzymaj propagację zdarzenia elementu nadrzędnego, po kliknięciu łącza
- 6. hammer.js i preventDefault();
- 7. Priorytet zdarzenia Hammer.js
- 8. Zatrzymaj propagację zdarzenia "kliknięcia" w ulotce
- 9. Polimer 1.0 Nie można zatrzymać propagacji zdarzeń z wykorzystaniem podsłuchu
- 10. Kliknij dwukrotnie konflikt (jQuery and Hammer.js)
- 11. Używanie pliku hammer.js na dynamicznie ładowanej treści
- 12. Jak zatrzymać sprawdzanie poprawności dla błędu wiązania w Symfony2
- 13. Jak zapobiec domyślnemu dotknięciu przy użyciu pliku hammer.js
- 14. Jak zatrzymać małpiego szaleństwa?
- 15. Jak zatrzymać bisect git?
- 16. Jak zatrzymać web.config dziedziczenie
- 17. C# - jak zatrzymać stoper?
- 18. Jak zatrzymać NSTimer
- 19. Python: Jak zatrzymać funkcję?
- 20. Jak zatrzymać requestAnimationFrame
- 21. Jak zatrzymać Jetty
- 22. Jak zatrzymać NSTimer?
- 23. Jak zatrzymać pętlę While?
- 24. Jak zatrzymać NSTimer.scheduledTimerWithTimeInterval
- 25. Jak zatrzymać przewijanie UITableView
- 26. Jak zatrzymać Swing EDT
- 27. Jak zatrzymać zdarzenie NStimer?
- 28. Jak zatrzymać gunicorn poprawnie
- 29. Jak zatrzymać szybkie wyliczanie?
- 30. Jak zatrzymać http.ListenAndServe()
FWIW technika w teście jednostkowym działa dobrze w przypadku zdarzeń machnięcia, więc dziękuję @nlyk za zwrócenie mi tej uwagi! Ludzie z Hammer.js, szkoda, że nowa, błyszcząca wersja biblioteki sprawia, że jest to trudniejsze niż wcześniej. –
Strona z poradami i podstępami http://hammerjs.github.io/tips/ opisuje, że musisz ustawić opcję {domEvents: true}, aby włączyć stopPropagation. Nie mam tej pracy do tej pory –