Jaki jest priorytet zdarzenia w JavaScript?
W jakiej kolejności są obsługiwane zdarzenia w JavaScript?
Oto wydarzenia w kolejności alfabetycznej...
- onabort-ładowanie obrazu jest przerwane
- onblur-element traci ostrość
- onchange-użytkownik zmienia zawartość pola
- onclick-mysz klika obiekt
- ondblclick-podwójne kliknięcie myszką obiekt
- onerror-błąd występuje, gdy wczytywanie dokumentu lub obrazu
- onfocus-element dostaje focus
- onkeydown - klawisz klawiatury jest pressed
- onkeypress - klawisz klawiatury jest wciśnięty lub przytrzymany
- onkeyup - klawisz klawiatury jest wydany
- onload-strona lub obrazek jest gotowe ładowanie
- onmousedown - przycisk myszy jest pressed
- onmousemove-mysz jest poruszana
- onmouseout-mysz jest wyłączona element
- onmouseover - mysz jest poruszana nad elementem
- onmouseup - przycisk myszy jest wydany
- onreset - przycisk reset jest clicked
- onresize-okno lub ramka jest resized
- onselect-tekst jest zaznaczony
- onsubmit - przycisk submit jest clicked
- onunload-użytkownik opuszcza stronę
W jakiej kolejności są one obsługiwane z kolejki zdarzeń?
Pierwszeństwo nie jest pierwszym wejściem-pierwszym wyjściem (FIFO), tak mi się wydaje.
3 answers
To nie było, o ile wiem, wyraźnie zdefiniowane w przeszłości. Różne przeglądarki mogą dowolnie wdrażać kolejność zdarzeń, jednak uznają to za stosowne. Chociaż większość z nich jest wystarczająco blisko do wszystkich praktycznych celów, zdarzały się i nadal występują dziwne przypadki krawędzi, w których przeglądarki nieco się różnią (i oczywiście o wiele więcej przypadków, w których niektóre przeglądarki nie wysyłają pewnych zdarzeń w ogóle).
To powiedziawszy, HTML 5 projekt zalecenia próbuje określić, jak zdarzenia będą kolejkowane i wysyłane - pętla zdarzeń:
Aby koordynować zdarzenia, użytkownik interakcja, Skrypty, rendering, sieci, i tak dalej, agenci użytkowników musi używać pętli zdarzeń w sposób opisany w Ta sekcja.
Musi być przynajmniej jedna pętla zdarzeń na agenta użytkownika, a co najwyżej jedno zdarzenie pętla na jednostkę powiązanych konteksty przeglądania o podobnym pochodzeniu.
Pętla zdarzeń ma jedno lub więcej zadań kolejki. Kolejka zadań jest uporządkowaną lista zadania [...] Gdy agent użytkownika ma ustawić zadanie w kolejce, musi dodać dane zadanie do jednego z kolejki zadań danego zdarzenia pętla. Wszystkie zadania z jednego konkretne źródło zadań musi być zawsze dodane do tej samej kolejki zadań, ale zadania z różnych źródeł zadań mogą być umieszczone w różnych kolejkach zadań. [...]
[...] agent użytkownika może mieć jedną kolejkę zadań dla zdarzeń myszy i klawiszy (użytkownik interaction task source), oraz inny za wszystko inne. Użytkownik agent może wtedy dać klawiaturę i mysz preferencja zdarzeń w stosunku do innych zadań trzy czwarte czasu, trzymając interfejs reaguje, ale nie głodzenie kolejek innych zadań i nigdy przetwarzanie zdarzeń z jednego zadania źródło nieaktualne. [...]
Zauważ, że ostatni bit: to do implementacji przeglądarki należy określenie, które zdarzenia zostaną pogrupowane i przetworzone w kolejności, a także priorytet nadany konkretnemu typowi zdarzeń. Dlatego jest nie ma powodu, aby oczekiwać, że wszystkie przeglądarki będą wysyłać wszystkie zdarzenia w ustalonej kolejności, teraz lub w przyszłości.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-11 21:55:25
Dla wszystkich, którzy chcą wiedzieć, Sekwencja względne zdarzenia dostać wywołane, patrz poniżej. Do tej pory testowałem tylko w Chrome.
- mouseover
- mousemove
- mouseout
- mousedown
- change (on focused input)
- blur (on focused element)
- focus
- mouseup
- Kliknij
- dblclick
- keydown
- klawiatura
- keyup
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-08 06:06:13
Jeśli patrzysz na zdarzenia myszy/dotyku, Patrick H. Lauke opublikował wykład na ten temat . Zdecydowanie ciekawa lektura – i zajmuje się wszystkimi dziwactwami różnych przeglądarek, różnych urządzeń i różnych standardów.
On również pakiet kompleksowy zestaw testów .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-09 13:56:19