2009-10-10 2 views

답변

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 :)

+0

멋진 참고 자료를 찾을 수도 있습니다. –

+0

사실 IE8을 포함한 행성의 다른 모든 브라우저에 비해 내 이벤트가 역순으로 실행되기 때문에 IE8을 심각하게 싫어합니다. Grr. – LRE

3

자바 스크립트의 단일 스레드 특성으로 인해 이벤트와 타이머는 대기열에 넣어지고 순차적으로 하나씩 실행되며 실행시 열기가있을 때 실행됩니다. 첫 번째 블록의 실행을 완료 한 후, 콜백의 마우스 클릭을 기다리는 두 개의 비동기 이벤트가하고 타이머, 브라우저

Events and Timers http://ejohn.org/files/427px-Timers.png

:

가장 다이어그램으로 설명된다 이 예제에서 마우스를 클릭하십시오.을 클릭하면 타이머가 실행될 수있는 다음 시간까지 대기합니다.

이 정말 좋은 기사를 확인하십시오. Timers and Events John Resig.