[JavaScript] Event
2024. 3. 18. 00:26ㆍFE/JavaScript
1. Event
사용자와 웹 페이지 간의 상호작용이 있을 때 적절한 액션을 취한다.
가. 이벤트 유형
이벤트 이름 | 설명 |
click | 사용자가 마우스 버튼을 클릭했을 때 발생 |
dblclick | 사용자가 마우스 버튼을 빠르게 두 번 클릭했을 때 발생 |
mousedown | 사용자가 마우스 버튼을 누르는 순간 발생 |
mouseup | 사용자가 마우스 버튼을 눌렀다 뗄 때 발생 |
mouseover | 마우스 포인터가 요소 위로 이동했을 때 발생 |
mouseout | 마우스 포인터가 요소에서 벗어났을 때 발생 |
mousemove | 마우스 포인터가 요소 위에서 움직였을 때 발생 |
contextmenu | 사용자가 마우스 오른쪽 버튼을 클릭하여 컨텍스트 메뉴를 요청했을 때 발생 |
이벤트 이름 | 설명 |
keydown | 키를 누르는 순간 발생 (ASCII) |
keypress | 키를 누르는 순간 발생하며, 키보드 입력을 받는 요소에만 적용 (KeyCode) |
keyup | 키를 눌렀다 뗄 때 발생 |
이벤트 이름 | 설명 |
submit | 사용자가 폼을 제출할 때 발생 (암기) |
focus | 입력 요소가 포커스 받았을 때 발생 |
blur | 입력 요소가 포커스를 잃었을 때 발생 |
change | select box, check box, radio button의 입력 요소의 값이 변경될 때 발생 |
input | input 또는 textarea의 입력 요소에 사용자가 입력할 때 발생 |
invalid | 입력 요소가 유효성 검사에 실패했을 때 발생 |
나. 이벤트 핸들러 등록
1) 인라인 이벤트 핸들러
- 여러 개의 함수를 한 번에 호출 가능
- CBD(Component Based Development) 방식의 Angular/React/Vue.js에서 많이 사용.
<div onclick="m1(); m2();">click here</div>
2) 이벤트 핸들러 프로퍼티 방식
- HTML와 JavaScript 코드를 분리할 수 있다.
- 하나의 이벤트 핸들러만 바인딩할 수 있다.
- 잘 안 씀.
<button id="btn">click here</button>
<script type="text/javascript">
const btn = document.querySelector("#btn");
// 처음으로 바인딩된 이벤트 핸들러 => 실행되지 않는다.
btn.onclick = function() {
alert("실행 안됨!");
};
// 마지막으로 바인딩된 이벤트 핸들러 => 실행된다.
btn.onclick = function () {
alert("실행됨!");
};
</script>
3) addEventListener 메서드 방식
- 전달 인자의 첫 번째에는 이벤트 이름, 두 번째에는 이벤트 핸들러, 세 번째에는 캡쳐링 여부를 사용.
<div id="div1">click here</div>
<script type="text/javascript">
document.querySelector("#div1").addEventListener("click", openAlert, false);
function openAlert(){
alert("Alert!!!!");
}
</script>
document.addEventListener(*event*, *function*, *Capture*)
event
: 이벤트 유형function
: 이벤트 핸들러 함수Capture
: 이벤트 전파 방식 (optional)(default는 false)
이 세 번째 인자(capture
)는 이벤트의 전파 방식을 결정한다.
capture == true
- 이벤트는 '캡처링' 단계에서 처리된다.
- 이벤트가 상위 요소에서 하위 요소 순서로 처리된다.
- 이벤트는 실제로 발생한 요소에 도달하기 전에 상위 요소에서 먼저 감지되고 처리된다.
capture == false
- 이벤트는 '버블링' 단계에서 처리된다.
- 이벤트가 실제로 발생한 요소에서 시작하여 상위 요소로 전파된다.
- 이벤트는 발생한 요소에서 먼저 감지되고 처리되며, 이후에 상위 요소로 전파된다.
(24.06.23 추가)
2. event.target
이벤트가 발생한 가장 안쪽의 요소는 타깃(target) 요소라고 불리고, event.target
을 사용해 접근할 수 있다.
예를 들어, 다음과 같은 HTML 폼이 있다고 가정해 봅시다:
<form >
<button type="button">버튼 1</button>
<button type="button">버튼 2</button>
</form>
<script type="text/javascript">
document.querySelector("form").addEventListener("click", print, false);
function print(){
console.log(this);
console.log(event.target);
}
</script>
this
는 <form>
요소를 가리키고, event.target
은 실제로 클릭한 버튼 요소를 가리킵니다.
event.target
과 this(=event.currentTarget)
는 다음과 같은 차이점이 있다.
this(=event.currentTarget)
:<form>
요소에 있는 핸들러가 동작했기 때문에<form>
요소를 가리킵니다.event.target
: 폼 안쪽에 실제 클릭한 요소를 가리킵니다.
'FE > JavaScript' 카테고리의 다른 글
[JavaScript] Array Method (0) | 2024.03.18 |
---|---|
[JavaScript] 리다이렉션, 새 창 열기 (0) | 2024.03.18 |
[JavaScript] FOR문 (0) | 2024.03.18 |
[JavaScript] 자료형, 함수 (0) | 2024.03.18 |
[JavaScript] BOM, DOM (0) | 2024.01.14 |