이벤트란 GUI 환경에서 웹 문서 내 사용자의 어떠한 동작을 말합니다.
주요 이벤트로는 마우스 이벤트, 키보드 이벤트, 문서 로딩 이벤트, 폼 이벤트 등이 있습니다.
종류 | 설명 |
---|---|
click | 사용자가 html 요소를 클릭할 때 이벤트가 발생합니다. |
dbclick | 사용자가 html 요소를 더블 클릭할 때 이벤트가 발생합니다. |
mousedown | 사용자가 요소 위에서 마우스를 누른 시점에 이벤트가 발생합니다. |
mouseup | 사용자가 요소 위에서 마우스를 누르고 뗀 시점에 이벤트가 발생합니다. |
mousemove | 사용자가 요소 위에서 마우스를 움직일 때 이벤트가 발생합니다. |
mouseover | 사용자가 요소 위에 마우스 커서를 올릴 때 이벤트가 발생합니다. |
mouseout | 사용자가 요소 위에서 마우스 커서가 벗어날 때 이벤트가 발생합니다. |
💡이벤트 중첩
위 처럼 마우스 이벤트에는click
이벤트를 처리하려했는데,mousedown
,mouseup
이벤트도 사실상 같이 일어나는 상황이 발생할 수 있습니다. 해당 이벤트 간의 관계와 작동 구조를 정확히 이해하는 것이 중요합니다.
종류 | 설명 |
---|---|
keydown | 사용자가 키를 누르는 동안 이벤트가 발생합니다. |
keypress | 사용자가 키를 눌렀을 때 이벤트가 발생합니다. |
keyup | 사용자가 키를 누르고 뗄 때 이벤트가 발생합니다. |
종류 | 설명 |
---|---|
abort | 문서가 완전히 로딩되기 전에 불러오기를 멈췄을 때 이벤트가 발생합니다. |
error | 문서가 정확히 로딩되지 않았을 때 이벤트가 발생합니다. |
load | 문서가 로딩이 끝나면 이벤트가 발생합니다. |
resize | 문서 화면 크기가 바뀌었을 때 이벤트가 발생합니다. |
scroll | 문서 화면이 스크롤되었을 때 이벤트가 발생합니다. |
unload | 문서에서 벗어날 때 이벤트가 발생합니다. |
종류 | 설명 |
---|---|
focus | 폼 요소에 포커스가 놓였을 때 이벤트가 발생합니다. |
blur | 폼 요소에 포커스를 잃었을 때 이벤트가 발생합니다. |
change | 목록이나 체크 상태 등이 변경되면 이벤트가 발생합니다. |
reset | 폼이 리셋되었을 때 이벤트가 발생합니다. |
submit | 폼이 제출(submit)되었을 때 이벤트가 발생합니다. |
웹 문서에서 발생한 이벤트에 대한 정보에 대한 프로퍼티와 메서드를 활용할 수 있는 객체 입니다.
이벤트 객체의 프로퍼티 또는 메서드의 경우 해당 이벤트가 발생한 경우에만 정보를 반환 또는 메서드를 사용할 수 있습니다. 이벤트가 일어난 요소에 해당 프로퍼티, 객체를 사용합니다.
프로퍼티 명 | 설명 | 사용법 |
---|---|---|
type | 발생한 이벤트의 이름을 반환합니다. | 이벤트요소.type |
target | 이벤트가 발생한 대상을 반환합니다. | 이벤트요소.target |
timeStamp | 이벤트가 발생한 시간을 반환합니다. | 이벤트요소.timeStamp |
button | 요소가 클릭되었을 때(click, mousedown, mouseup) 눌린 마우스 버튼의 키값을 반환합니다. 값 : 0: 좌클릭 / 1: 휠 버튼 또는 중간 버튼(있는 경우) / 2: 우클릭 | 이벤트요소.button |
which | 키보드와 관련된 이벤트가 발생했을 때 키의 코드를 유니코드값으로 반환합니다. | 이벤트요소.which |
charCode | keyPress 이벤트가 발생할 때 어떤 키가 눌렸는지 유니코드 값으로 반환합니다. | 이벤트요소.chartCode |
altKey | 이벤트가 발생할 때 alt 키가 눌렸는지 여부를 boolean 값으로 반환합니다. | 이벤트요소.altKey |
ctrlKey | 이벤트가 발생할 때 ctrl 키가 눌렸는지 여부를 boolean 값으로 반환합니다. | 이벤트요소.ctrlKey |
shiftKey | 이벤트가 발생할 때 shift 키가 눌렸는지 여부를 boolean 값으로 반환합니다. | 이벤트요소.shiftKey |
clientX | 이벤트가 발생한 가로위치를 반환합니다. | 이벤트요소.clientX |
clientY | 이벤트가 발생한 세로위치를 반환합니다. | 이벤트요소.clientY |
pageX | 현재문서 기준으로 이벤트가 발생한 가로위치를 반환합니다. | 이벤트요소.pageX |
pageY | 현재문서 기준으로 이벤트가 발생한 세로위치를 반환합니다. | 이벤트요소.pageY |
screenX | 현재 화면 기준으로 이벤트가 발생한 가로위치를 반환합니다. | 이벤트요소.screenX |
screenY | 현재 화면 기준으로 이벤트가 발생한 세로위치를 반환합니다. | 이벤트요소.screenY |
메서드 명 | 설명 | 사용법 |
---|---|---|
preventDefault() | 이벤트를 최소할 수 있는 경우에 취소합니다. | 이벤트요소.preventDefault() |
이벤트 처리기, 이벤트 핸들러 라고도 하며, 요소에 특정 이벤트가 발생하면 함수를 실행시키는 것을 말합니다.
이벤트 처리기는 아래의 다양한 방법이 있으며, 상황에 맞게 적절한 방식을 사용해야합니다.
addEventListener()
메서드 이용html 요소에 직접 속성으로on이벤트명="함수() 또는 메서드()"
로 사용할 수 있습니다.
다만, 이렇게 작성할 경우 수정 시 웹 문서를 다 돌아다니면서 수정해야한 다는 점 등에서 유지보수 관리가 어렵다는 단점이 있어 권장되는 방법은 아닙니다.
<div>
<!--사용법-->
<p on이벤트명="함수명() | 메서드명()">내용</p>
<!--사용예시-->
<p onclick="alert('요소가 클릭되었습니다.')">예시내용</p>
</div>
JS 내에서 요소를 선택 후 해당 요소에 직접 이벤트를 연결해주는 방식입니다.
on이벤트명 = 함수명
으로 사용할 수 있습니다.
이때, 함수명()
이 아니라 함수명
으로 괄호를 생략하는 점을 유의해야합니다. 또는 익명함수를 활용할 수 있습니다.
// 사용법
선택요소.on이벤트명 = 함수명(또는 익명함수 사용가능);
// 사용예시
const element = document.getElementById('id명');
function showAlert() {
alert('요소가 클릭되었습니다.');
}
element.onclick = showAlert;
addEventListener()
메서드 이용JS 내에서 요소를 선택 후 해당 요소에 addEventListener()
를 이용해 이벤트 처리기를 연결하는 방식 입니다.
선택요소.addEventListener('이벤트명', 함수명)
으로 사용할 수 있습니다.
이때, 함수명()
이 아니라 함수명
으로 괄호를 생략하는 점을 유의해야합니다. 또는 익명함수를 활용할 수 있습니다.
// 사용법
선택요소.addEventListener('이벤트명', 함수명);
// 사용예시
const element = document.getElementById('id명');
function showAlert() {
alert('요소가 클릭되었습니다.');
}
element.addEventListener('click', showAlert);
Do it! 한 권으로 끝내는 웹 기본 교과서 HTML+CSS+자바스크립트 웹 표준의 정석 - 고경희
위 책을 공부하며 작성하고 있습니다!