<tagName on{eventType}="callback()">...</tagName>
target.on{eventType} = callback
target.addEventListener({eventType}, callback[, options])
참고 : Introduction to brower events | javascript.info
이벤트를 어떤 방향으로 전파할지에 대한 방식에 대한 것
eventPhase로 디버깅 가능
버블링은 이벤트 발생 지점에서 최상위 노드(body)로 전파되며 해당 이벤트에 대한 모든 핸들러의 함수 실행. eventpPhase: 2(target phase) -> 3(bubbling phase)
캡쳐는 최상위 노드(body)에서 이벤트 발생 지점까지 전파되며 해당 이벤트에 대한 모든 핸들러의 함수 실행. eventPhase: 1(capturing phase) -> 2(target phase)
기본(default) 방식은 버블링.
만약 캡쳐링 방식을 사용하려면 addEventListener에 세번째 인자에 true 또는 {capture:true}
실제로는 캡쳐링 방식을 사용하는 경우는 극히 드물며, IE는 캡쳐링을 지원하지 않기 때문에 사용에 신중해야한다.
참고 : EventTarget.addEventListener | MDN
event.stopPropagation();
<tr>
에 onclick이벤트가 걸려 있고, <table>
에도 걸려있을 경우, <tr>
을 클릭하면 <tr>
의 이벤트에서 <table>
의 이벤트 순으로 이벤트 핸들러가 호출되는데, 이 경우 <table>
의 onclick 이벤트가 trigger 되지 않도록 하는 것이 stopPropagation() 이다.