programing

DOM 이벤트 우선 순위

sourcetip 2021. 1. 15. 20:24
반응형

DOM 이벤트 우선 순위


JavaScript에서 이벤트가 처리되는 우선 순위는 무엇입니까?

다음은 알파벳순으로 이벤트입니다 ...

  1. onabort-이미지로드가 중단됨
  2. onblur-요소가 초점을 잃습니다.
  3. onchange-사용자가 필드의 내용을 변경합니다.
  4. onclick-마우스가 개체를 클릭합니다.
  5. ondblclick-마우스가 개체를 두 번 클릭합니다.
  6. onerror-문서 또는 이미지를로드 할 때 오류가 발생합니다.
  7. onfocus-요소가 포커스를 얻습니다.
  8. onkeydown-키보드 키를 눌렀습니다.
  9. onkeypress-키보드 키를 누르거나 누르고 있습니다.
  10. onkeyup-키보드 키가 해제됩니다.
  11. onload-페이지 또는 이미지로드 완료
  12. onmousedown-마우스 버튼을 눌렀습니다.
  13. onmousemove-마우스 이동
  14. onmouseout-마우스가 요소 밖으로 이동합니다.
  15. onmouseover-마우스가 요소 위로 이동합니다.
  16. onmouseup-마우스 버튼을 놓았습니다.
  17. onreset-재설정 버튼을 클릭합니다.
  18. onresize-창 또는 프레임의 크기가 조정됩니다.
  19. onselect-텍스트가 선택됨
  20. onsubmit-제출 버튼이 클릭 됨
  21. onunload-사용자가 페이지를 종료합니다.

이벤트 대기열에서 어떤 순서로 처리됩니까?

우선 순위는 선입 선출 (FIFO)이 아니므로 저는 믿습니다.


내가 아는 한 이것은 과거에 명시 적으로 정의되지 않았습니다. 다른 브라우저는 이벤트 순서를 자유롭게 구현할 수 있지만 적합하다고 생각합니다. 대부분은 모든 실제적인 목적에 충분히 가깝지만 브라우저가 다소 다른 경우 (물론 특정 브라우저가 특정 이벤트 를 전혀 보내지 않는 더 많은 경우)가 발생하고 계속해서 있습니다 .

즉, HTML 5 초안 권장 사항 은 이벤트가 대기열에 추가되고 전달되는 방법을 지정하려고 시도합니다- 이벤트 루프 :

이벤트, 사용자 상호 작용, 스크립트, 렌더링, 네트워킹 등을 조정하려면 사용자 에이전트는이 섹션에 설명 된대로 이벤트 루프를 사용해야합니다.

사용자 에이전트 당 하나 이상의 이벤트 루프가 있어야하며 관련된 유사 출처 브라우징 컨텍스트의 단위당 최대 하나의 이벤트 루프가 있어야합니다.

이벤트 루프에는 하나 이상의 작업 대기열이 있습니다. 태스크 큐는 순서가 지정된 태스크 목록입니다. [...] 사용자 에이전트가 태스크를 큐에 넣으려면 관련 이벤트 루프의 태스크 큐 중 하나에 주어진 태스크를 추가해야합니다. 특정 작업 소스의 모든 작업은 항상 동일한 작업 대기열에 추가되어야하지만 다른 작업 소스의 작업은 다른 작업 대기열에 배치 될 수 있습니다. [...]

[...] 사용자 에이전트는 마우스 및 키 이벤트 (사용자 상호 작용 작업 소스)에 대해 하나의 작업 대기열을 가질 수 있고 다른 모든 것에 대해 다른 작업 대기열을 가질 수 있습니다. 그런 다음 사용자 에이전트는 3/4의 시간 동안 다른 작업보다 키보드 및 마우스 이벤트에 우선 순위를 부여하여 인터페이스의 응답 성을 유지하지만 다른 작업 대기열을 고갈시키지 않고 한 작업 소스의 이벤트를 순서가 잘못 처리하지 않습니다. [...]

마지막 비트 : 특정 유형의 이벤트에 부여 된 우선 순위뿐만 아니라 함께 그룹화되고 순서대로 처리 될 이벤트를 결정하는 것은 브라우저 구현에 달려 있습니다. 따라서 모든 브라우저가 현재 또는 미래에 고정 된 순서로 모든 이벤트 를 전달할 것으로 기대할 이유가 거의 없습니다 .


순서 상대 이벤트가 호출되는 것을 알고 싶은 사람은 아래를 참조하십시오. 지금까지 Chrome에서만 테스트했습니다.

  1. 마우스 오버
  2. mousemove
  3. mouseout

  1. mousedown
  2. 변경 (집중된 입력)
  3. 흐림 (집중된 요소)
  4. 초점
  5. mouseup
  6. 딸깍 하는 소리
  7. dblclick

  1. keydown
  2. 키 누름
  3. keyup

마우스 / 터치 이벤트를보고 있다면 Patrick H. Lauke가 주제에 대한 강연을 발표 했습니다 . 확실히 흥미로운 읽기 – 다른 브라우저, 다른 장치 및 다른 표준의 모든 단점을 다룹니다.

그는 또한 포괄적 인 테스트 세트를 번들 로 제공합니다 .

참조 URL : https://stackoverflow.com/questions/282245/dom-event-precedence

반응형