[study] [javaScript] 이벤트리스너 공부하기
EventListener
EventListener란?
- 목적
- 발생한 이벤트에 대처하기 위해 작성된 JavaScript 코드
- 종류
- 이벤트의 종류는 70여가지, 이벤트 리스너는 이벤트 앞에 ‘on’을 덧붙임
- onmousedown : mousedown의 이벤트 리스너
- 이벤트의 종류는 70여가지, 이벤트 리스너는 이벤트 앞에 ‘on’을 덧붙임
이벤트 리스너 만들기
HTML 태그 내 작성
HTML 태그의 이벤트 리스너 속성에 리스너 코드 직접 작성
<p onmouseover="this.style.backgroundColor='red'" onmouseout="this.style.backgroundColor='white'">
마우스 올리면 배경색을 red 색으로 변경
</p>
DOM 객체의 이벤트 리스너 프로퍼티에 작성
DOM 객체의 이벤트 리스너 프로퍼티에 이벤트 리스너 작성
<p id="p"> 마우스 올리면 배경색을 red 색으로 변경 </p>
let p;
function init(){
p = document.getElementById("p");
p.onmouseover = over;
p.onmouseout = out;
}
function over(){
p.style.backgroundColor="red";
}
function out(){
p.style.backgroundColor="white";
}
DOM 객체의 addEventListener() 메소드 이용
- addEventListener(eventName, listener[, useCapture])
- eventName : 이벤트 타입
- click, load, keydown 등
- listener : 이벤트 리스너로 등록할 함수 이름
- useCapture (생략 가능)
- true : 캡쳐단계에서 실행
- false : 버블단계에서 실행 -> 디폴트
- eventName : 이벤트 타입
<p id="p"> 마우스 올리면 배경색을 red 색으로 변경 </p>
let p;
function init(){
p = document.getElementById("p");
p.addEventListener("mouseover", over);
p.addEventListener("mouseout", out);
}
function over(){
p.style.backgroundColor="red";
}
function out(){
p.style.backgroundColor="white";
}
익명함수로 작성
익명함수(anonymous function)
- 함수의 이름 없이 필요한 곳에 함수의 코드 바로 작성
- 코드가 짧거나 한 곳에서만 필요한 경우 사용
p.onmouseover = function(){
this.style.backgroundColor="red";
};
p.addEvenrListener("mouseover", function(){this.style.backgroundColor="red";}
);
이벤트 객체 (event object)
발생한 이벤트의 정보를 담은 객체
- mousedown : 마우스의 좌표, 버튼 번호 등
이벤트가 처리되면 이벤트 객체는 소멸
이벤트 객체 전달받기
이벤트 객체는 이벤트 리스너 함수의 첫번째 매개변수에 전달
- 이름을 가진 이벤트 리스너
function f(e){ // 매개변수 e에 이벤트 객체를 전달 받음 ... } obj.onclick = f; // obj객체의 onclick 리스너로 함수 f 등록 - 익명 함수의 경우
obj.onclick = function(e){ // 매개변수 e에 이벤트 객체를 전달 받음 ... } - html태그에 이벤트 리스너
<script>
function f(e){
...
}
</script>
<button onclick="f(event)">버튼</button> <!--event 라는 이름으로 이벤트 객체 전달받음-->
<div onclick="alert(event.type)">버튼</div> <!--event종류 출력-->
이벤트 객체에 들어 있는 정보
현재 발생한 이벤트에 관한 다양한 정보
- 객체의 프로퍼티와 메소드로 알 수 있음
- 이벤트 객체의 공통 멤버
- 프로퍼티
- type : 현재 발생한 이벤트의 종류
- target : 이밴트를 발생시킨 객체(DOM객체 / HTML 태그)
- currentTarget : 현재 이벤트 리스너를 실행하고 있는 DOM 객체
- defaultPrevented : 이벤트의 디폴트 행동이 취소되었는지를 나타내는 True/False 값
- 메소드
- preventDefault() : 이벤트의 디폴트 행동(새로고침)을 취소시키는 메소드
- 프로퍼티
이벤트 흐름
- 이벤트 발생
- window 객체 도달
- DOM트리를 따라 이벤트 타겟에 도착
- 다시 반대 방향으로 플러 window객체 도달
- 사라짐
캡쳐 단계(capturing phase)
- 이벤트 발생
- window 객체 도달
- DOM트리를 따라 이벤트 타겟에 도착
버블 단계(bubbling phase)
- 다시 반대 방향으로 플러 window객체 도달
- 사라짐
댓글남기기