DOM 이벤트 우선 순위
JavaScript에서 이벤트가 처리되는 우선 순위는 무엇입니까?
다음은 알파벳순으로 이벤트입니다 ...
- onabort-이미지로드가 중단됨
- onblur-요소가 초점을 잃습니다.
- onchange-사용자가 필드의 내용을 변경합니다.
- onclick-마우스가 개체를 클릭합니다.
- ondblclick-마우스가 개체를 두 번 클릭합니다.
- onerror-문서 또는 이미지를로드 할 때 오류가 발생합니다.
- onfocus-요소가 포커스를 얻습니다.
- onkeydown-키보드 키를 눌렀습니다.
- onkeypress-키보드 키를 누르거나 누르고 있습니다.
- onkeyup-키보드 키가 해제됩니다.
- onload-페이지 또는 이미지로드 완료
- onmousedown-마우스 버튼을 눌렀습니다.
- onmousemove-마우스 이동
- onmouseout-마우스가 요소 밖으로 이동합니다.
- onmouseover-마우스가 요소 위로 이동합니다.
- onmouseup-마우스 버튼을 놓았습니다.
- onreset-재설정 버튼을 클릭합니다.
- onresize-창 또는 프레임의 크기가 조정됩니다.
- onselect-텍스트가 선택됨
- onsubmit-제출 버튼이 클릭 됨
- onunload-사용자가 페이지를 종료합니다.
이벤트 대기열에서 어떤 순서로 처리됩니까?
우선 순위는 선입 선출 (FIFO)이 아니므로 저는 믿습니다.
내가 아는 한 이것은 과거에 명시 적으로 정의되지 않았습니다. 다른 브라우저는 이벤트 순서를 자유롭게 구현할 수 있지만 적합하다고 생각합니다. 대부분은 모든 실제적인 목적에 충분히 가깝지만 브라우저가 다소 다른 경우 (물론 특정 브라우저가 특정 이벤트 를 전혀 보내지 않는 더 많은 경우)가 발생하고 계속해서 있습니다 .
즉, HTML 5 초안 권장 사항 은 이벤트가 대기열에 추가되고 전달되는 방법을 지정하려고 시도합니다- 이벤트 루프 :
이벤트, 사용자 상호 작용, 스크립트, 렌더링, 네트워킹 등을 조정하려면 사용자 에이전트는이 섹션에 설명 된대로 이벤트 루프를 사용해야합니다.
사용자 에이전트 당 하나 이상의 이벤트 루프가 있어야하며 관련된 유사 출처 브라우징 컨텍스트의 단위당 최대 하나의 이벤트 루프가 있어야합니다.
이벤트 루프에는 하나 이상의 작업 대기열이 있습니다. 태스크 큐는 순서가 지정된 태스크 목록입니다. [...] 사용자 에이전트가 태스크를 큐에 넣으려면 관련 이벤트 루프의 태스크 큐 중 하나에 주어진 태스크를 추가해야합니다. 특정 작업 소스의 모든 작업은 항상 동일한 작업 대기열에 추가되어야하지만 다른 작업 소스의 작업은 다른 작업 대기열에 배치 될 수 있습니다. [...]
[...] 사용자 에이전트는 마우스 및 키 이벤트 (사용자 상호 작용 작업 소스)에 대해 하나의 작업 대기열을 가질 수 있고 다른 모든 것에 대해 다른 작업 대기열을 가질 수 있습니다. 그런 다음 사용자 에이전트는 3/4의 시간 동안 다른 작업보다 키보드 및 마우스 이벤트에 우선 순위를 부여하여 인터페이스의 응답 성을 유지하지만 다른 작업 대기열을 고갈시키지 않고 한 작업 소스의 이벤트를 순서가 잘못 처리하지 않습니다. [...]
마지막 비트 : 특정 유형의 이벤트에 부여 된 우선 순위뿐만 아니라 함께 그룹화되고 순서대로 처리 될 이벤트를 결정하는 것은 브라우저 구현에 달려 있습니다. 따라서 모든 브라우저가 현재 또는 미래에 고정 된 순서로 모든 이벤트 를 전달할 것으로 기대할 이유가 거의 없습니다 .
순서 상대 이벤트가 호출되는 것을 알고 싶은 사람은 아래를 참조하십시오. 지금까지 Chrome에서만 테스트했습니다.
- 마우스 오버
- mousemove
- mouseout
- mousedown
- 변경 (집중된 입력)
- 흐림 (집중된 요소)
- 초점
- mouseup
- 딸깍 하는 소리
- dblclick
- keydown
- 키 누름
- keyup
마우스 / 터치 이벤트를보고 있다면 Patrick H. Lauke가 주제에 대한 강연을 발표 했습니다 . 확실히 흥미로운 읽기 – 다른 브라우저, 다른 장치 및 다른 표준의 모든 단점을 다룹니다.
그는 또한 포괄적 인 테스트 세트를 번들 로 제공합니다 .
참조 URL : https://stackoverflow.com/questions/282245/dom-event-precedence
'programing' 카테고리의 다른 글
Gson 선택 및 필수 필드 (0) | 2021.01.15 |
---|---|
VirtualBox의 Ubuntu에서 인터넷 액세스 (0) | 2021.01.15 |
C ++ 11에서 쌍 범위 액세스가 제거 된 이유는 무엇입니까? (0) | 2021.01.15 |
Mac OS가 Chrome에서 "Google로 검색"을 열도록 강제하는 방법 (0) | 2021.01.15 |
TimerTask 대 Thread.sleep 대 핸들러 postDelayed-N 밀리 초마다 함수를 호출하는 것이 가장 정확합니까? (0) | 2021.01.15 |