한 요소에 이벤트가 발생하면, 이 요소에 할당된 핸들러가 동작하고, 이어서 부모 요소의 핸들러가 동작한다. 최상단의 조상 요소를 만날 때까지 이 과정이 반복되면서 요소 각각에 할당된 핸들러가 동작한다.
event.stopPropagation() : 핸들러에게 이벤트를 완전히 처리하고 난 후 버블링을 중단하도록 명령
버블링은 꼭 멈춰야 하는 명백한 상황이 아니라면 막지 마세요. 아키텍처를 "잘 고려해 진짜 막아야 하는 상황에서만 막으세요. stopPropagation을 사용한 영역은 ‘죽은 영역’이 되어 시스템 코드가 정상 동작하지 않을 수 있습니다.
event.stopImmediatePropagation() : 핸들러 중 하나가 버블링을 멈추더라도 나머지 핸들러는 여전히 동작한다.
이벤트 캡처링은 이벤트 버블링과 반대로, 최상단의 조상 요소에서 타겟 요소까지 이벤트가 전파되는 단계이다.
표준 DOM 이벤트에서 정의한 이벤트 흐름엔 3가지 단계가 있다.
addEventListener의 세 번째 인자를 true로 설정하면 캡처링이 활성화된다. (default는 false)
: 요소마다 핸들러를 할당하지 않고, 요소의 공통 조상에 이벤트 핸들러를 단 하나만 할당하여 여러 요소를 다루는 것