Jaki jest priorytet zdarzenia w JavaScript?

W jakiej kolejności są obsługiwane zdarzenia w JavaScript?

Oto wydarzenia w kolejności alfabetycznej...

  1. onabort-ładowanie obrazu jest przerwane
  2. onblur-element traci ostrość
  3. onchange-użytkownik zmienia zawartość pola
  4. onclick-mysz klika obiekt
  5. ondblclick-podwójne kliknięcie myszką obiekt
  6. onerror-błąd występuje, gdy wczytywanie dokumentu lub obrazu
  7. onfocus-element dostaje focus
  8. onkeydown - klawisz klawiatury jest pressed
  9. onkeypress - klawisz klawiatury jest wciśnięty lub przytrzymany
  10. onkeyup - klawisz klawiatury jest wydany
  11. onload-strona lub obrazek jest gotowe ładowanie
  12. onmousedown - przycisk myszy jest pressed
  13. onmousemove-mysz jest poruszana
  14. onmouseout-mysz jest wyłączona element
  15. onmouseover - mysz jest poruszana nad elementem
  16. onmouseup - przycisk myszy jest wydany
  17. onreset - przycisk reset jest clicked
  18. onresize-okno lub ramka jest resized
  19. onselect-tekst jest zaznaczony
  20. onsubmit - przycisk submit jest clicked
  21. 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.

Author: Kevin Hakanson, 2008-11-12

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.

 33
Author: Shog9,
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.

  1. mouseover
  2. mousemove
  3. mouseout

  1. mousedown
  2. change (on focused input)
  3. blur (on focused element)
  4. focus
  5. mouseup
  6. Kliknij
  7. dblclick

  1. keydown
  2. klawiatura
  3. keyup
 14
Author: Ricky Boyce,
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 .

 3
Author: tomekwi,
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