댓글 검색 목록

[javascript] 이벤트 버블링 및 이벤트 캡처

페이지 정보

작성자 운영자 작성일 20-06-03 09:13 조회 589 댓글 0

버블링 및 캡처는 DOM 이벤트가 전파하는 데 사용하는 두 가지 모델입니다.


DOM 구조가

<div id="container">
  <button>Click me</button>
</div>


사용자가 버튼을 클릭 한 시간을 추적하려고 하는데 하나의 버튼과 하나의 #container에 두 개의 이벤트 리스너가 있습니다.


전파를 중지하지 않으면 하위 요소를 클릭하면 항상 상위 요소로 전파됩니다 (나중에 참조).


이러한 이벤트 리스너는 순서대로 호출되며 이 순서는 사용 된 이벤트 버블링 / 캡처 모델에 의해 결정됩니다.


Bubbling은 클릭 한 항목 (자식)에서 가장 가까운 트리부터 시작하여 모든 상위 트리까지 이벤트가 전파됨을 의미합니다.


이 예에서 핸들러 켜기 버튼은 #container 핸들러보다 먼저 실행됩니다.


Capturing는 반대입니다. 외부 이벤트 핸들러는 버튼에 있는 하나의 특정 핸들러보다 먼저 실행됩니다.


기본적으로 모든 이벤트가 버블링됩니다. 


addEventListener에 세 번째 인수를 적용하여 true로 설정하여 이벤트 캡처를 채택하도록 선택할 수 있습니다.


document.getElementById('container').addEventListener(
  'click',
  () => {
    //window loaded
  },
  true
)


먼저 모든 캡처 이벤트 핸들러가 실행됩니다.


그런 다음 모든 버블링 이벤트 핸들러.


순서는 이 원칙을 따릅니다. DOM은 Window 객체에서 시작하여 모든 요소를 ​​거치고 클릭 한 항목을 찾습니다. 그렇게 하는 동안 이벤트와 관련된 이벤트 핸들러를 캡처합니다 (캡처 단계).


대상에 도달하면 Window 개체까지 부모 트리까지 이동을 반복하고 이벤트 처리기를 다시 호출합니다 (버블링 단계).



댓글목록 0

등록된 댓글이 없습니다.

웹학교 로고

온라인 코딩학교

코리아뉴스 2001 - , All right reserved.