js 클릭 이벤트 의 실행 과정 실례 분석[거품 과 포획]

본 고의 실례 는 js 클릭 이벤트 의 집행 과정 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
js 이벤트 대상 이 벤트 는 많은 이벤트 유형 을 포함 합 니 다.여 기 는 onclick 사건 을 예 로 들 어 js 이벤트 캡 처 체제 와 거품 체제 에서 의 집행 과정,그리고 사건 의 캡 처 와 거품 을 어떻게 막 는 지 연구 합 니 다.
우선 요 소 를 클릭 하면 브 라 우 저의 실행 과정 을 봅 니 다.
1.특정한 요소 가 연 결 된 이벤트 가 실 행 될 때 브 라 우 저 는 최상 위 document 요소 에서 이벤트 흐름 을 보 냅 니 다.
2.이 사건 의 흐름 은 dom 등급 을 따라 한 층 한 층 아래로 찾 습 니 다.사건 을 촉발 하 는 목표 요 소 를 만 날 때 까지 이 검색 과정 은 캡 처 단계 입 니 다.
  설명:캡 처 단계,각 층 dom 을 찾 을 때 같은 이벤트 가 기본적으로 실행 되 지 않 습 니 다.요소 의 이 벤트 는 기본적으로 거품 단계 에서 실 행 됩 니 다.
3.목표 요소 에 도달 하면 목표 요소 가 연 결 된 이벤트 함수,즉 목표 요소 이벤트 함수 처리 단 계 를 촉발 합 니 다.
4.목표 요소 사건 을 처리 한 후에 dom 을 따라 한 층 한 층 위로 찾 습 니 다.이때 dom 에 같은 사건 이 있 으 면 기본 값 으로 촉발 되 고 거품 단계 가 발생 합 니 다.
실례:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  
 <div class="box" style="width:300px;height:300px;background:green;" οnclick="firstClick()">
  parent
  <div class="child" οnclick="secondClick()">child
    <div class="button" onclick = "thirdClick()">  </div>
  </div>
</div>
<script>
  var divs=document.querySelectorAll("div");//     divs
  function firstClick(){
    alert('firstClick')
  }
  function secondClick(){
    alert('secondClick')
  }
  function thirdClick(){
    alert('thirdClick')
  }
  function fn0(){
    alert("box");
  }
  function fn1(){
    alert("child");
  }
  function fn2(){
    alert("but");
  }
  divs[0].addEventListener("click",fn0,false);
  divs[1].addEventListener("click",fn1,false);
  divs[2].addEventListener("click",fn2,false);
</script>
</body>
</html>

설명:
addEventListener 는 세 개의 매개 변수 가 있 습 니 다.마지막 매개 변 수 는 요소 이벤트 의 트리거 단 계 를 결정 합 니 다.기본 값 은 false 이 고 거품 단계 에서 실 행 됩 니 다.true 로 설정 하면 캡 처 단계 에서 실 행 됩 니 다.
dom 에 직접 연 결 된 이 벤트 는 addEventListener 가 감청 한 이벤트 가 실 행 된 후에 실 행 됩 니 다.
거품 방지:

onclick = function(e){
  e=e||window.event;
    if(e.stopPropagation){
    e.stopPropagation();//     
  }else{
    e.cancelBubble=true;//IE   
  }
}

포획 저지:e.target 판단

function fn0(e){
  if(e.target == divs[0]){
    alert("fn0");
  }
}
divs[0].addEventListener("click",fn0,true);

관심 있 는 친 구 는 온라인 HTML/CSS/JavaScript 코드 실행 도 구 를 사용 할 수 있 습 니 다.http://tools.jb51.net/code/HtmlJsRun상기 코드 실행 효 과 를 테스트 할 수 있 습 니 다.
자 바스 크 립 트 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기