하나의 이벤트에 대한 JavaScript의 이벤트 핸들러는 FIFO, LIFO 또는 병렬로 실행됩니까?하나의 이벤트에 대해 JavaScript의 이벤트 핸들러가 FIFO, LIFO 또는 병렬로 실행됩니까?
1
A
답변
4
그것은 매우 간단합니다. DOM Level 2 Events 모듈 does not specify order에서 이벤트 리스너가 실행됩니다. 그러나 DOM 레벨 3 이벤트 모듈 does specify order은 등록과 동일해야합니다.
처음 등록 - 첫 번째 해고. 하나는 추천입니다 레벨 2 반면, DOM 레벨 3 이벤트 모듈은 아직 초안입니다
참고. 그럼에도 불구하고 최신 브라우저는 오래된 레벨 2 대신에이 초안 레벨 3 사양의 의미 체계를 자주 수행합니다.
실제적으로 IIRC 만 IE는 이벤트 수신기의 순서를 따르지 않습니다. 다른 모든 브라우저는이를 FIFO로 구현합니다 (DOM L3 이벤트에 설명 된대로). related tests online :)
3
자바 스크립트의 단일 스레드 특성으로 인해 이벤트와 타이머는 대기열에 넣어지고 순차적으로 하나씩 실행되며 실행시 열기가있을 때 실행됩니다. 첫 번째 블록의 실행을 완료 한 후, 콜백의 마우스 클릭을 기다리는 두 개의 비동기 이벤트가하고 타이머, 브라우저
Events and Timers http://ejohn.org/files/427px-Timers.png
:
이
가장 다이어그램으로 설명된다 이 예제에서 마우스를 클릭하십시오.을 클릭하면 타이머가 실행될 수있는 다음 시간까지 대기합니다.이 정말 좋은 기사를 확인하십시오. Timers and Events John Resig.
0
PPK는 이벤트 버블 링 및 이벤트 캡처에 대한 훌륭한 글을 가지고 있습니다.
멋진 참고 자료를 찾을 수도 있습니다. –
사실 IE8을 포함한 행성의 다른 모든 브라우저에 비해 내 이벤트가 역순으로 실행되기 때문에 IE8을 심각하게 싫어합니다. Grr. – LRE