2015-08-26 13 views
6

Mam przycisk papieru z funkcją "dotknij", która otwiera papierowe okno dialogowe zawierające przycisk "Zaakceptuj", który zamknie go po kliknięciu.Polimer 1.0 Nie można zatrzymać propagacji zdarzeń z wykorzystaniem podsłuchu

Problem pojawia się, jeśli zależnie od rozdzielczości ekranu, a przycisk "Zaakceptuj" okna dialogowego znajduje się nad początkowym przyciskiem, aby otworzyć okno dialogowe, po kliknięciu otwiera się i zamyka okno dialogowe. Zakładam, że zdarzenie on-tap jest uruchamiane w obu.

Próbowałem tych 2 metod, ale nie wydają się pomóc.

event.cancelBubble = true; 
event.stopPropagation(); 
+0

Jeśli skorzystam z funkcji "kliknij, aby połączyć" mojej funkcji, tak się nie stanie. Nadal jednak szukam sposobu na powstrzymanie rozprzestrzeniania się zdarzenia. – intosite

+0

event.stopPropagation(); na callBack (e) z # 95 w https://github.com/PolymerLabs/more-routing/blob/master/demo/polyfora-forum-index.html –

Odpowiedz

0

Problemem jest to, że pojemnościowe ekrany lub nawet myszy może generować kilka zdarzenie kranu w tym samym miejscu w kilku milisek.

  • Te myszy, ponieważ szybkie zmiany w wysokiego i niskiego napięcia (logiczne 1 i 0) generowania Wich sygnału sieciowego może skakać koryta na capacitator (który może być przycisk dwa stycznik pomiędzy powietrzem), jeżeli dopasowanie warunków. Jednak zdarzenie onclick już łapie tę sprawę i nie musisz nic robić, aby go rozwiązać.

  • Ekrany pojemnościowe to kondensatory, a po prostu obracanie palcem powinno wywołać wiele zdarzeń związanych z kranem, ponieważ skórka ma różną głębokość izolacji i trudność w oznaczaniu początku i końca kranu.

Ten problem fizyczny powinien zostać rozwiązany przez platformę, ale nie jest obecnie w każdej sytuacji (ale większość urządzeń filtruje to). Zamierzam samodzielnie rozwiązać ten problem za pomocą przezroczystego elementu nakładki, który może przechwytywać zdarzenia wskaźnika przez krótki czas, dzięki czemu mogę złapać "zalewanie" przycisku lub ekranu pojemnościowego przez kilka ms.

Jeśli wystarcza 10-20ms, należy poczekać na klatkę w funkcji stuknięcia przy pomocy requestAnimationFrame, a następnie wyświetlić okno dialogowe. Tania sztuczka, ale robi to, co trzeba, ale ostatecznie możesz poczekać na ustalony limit czasu, aby wyświetlić okno dialogowe, ponieważ masz 100 ms, aby odpowiedzieć na interakcję użytkownika.

Nie możesz tego naprawić, manipulując opcjami zdarzeń przeglądarki, ponieważ, jak wiem, nie masz opcji, ile czasu musi upłynąć, aby mogło nastąpić następne zdarzenie. Ale jeśli poczekasz na klatkę, to może zachowywać się tak, jak dodajesz opóźnienie między zdarzeniami.

Powiązane problemy