CS
[CS] 이벤트에 대해
Gapus
2023. 11. 21. 08:00
이벤트
설명
- 이벤트는 웹 페이지와 사용자 간의 상호작용을 가능하게 하는 중요한 요소
- 이벤트는 사용자가 웹페이지에서 특정 행동을 취하면 발생
- 이벤트 처리를 잘 활용하면 사용자 친화적인 웹페이지를 만들 수 있다.
- 주로 JavaScript를 통해 처리되며, 특정 이벤트가 발생했을 때 실행되는
함수인 이벤트 핸들러 또는 이벤트 리스너를 등록하여 사용 - 이벤트 핸들러 예시
element.addEventListener('event', function);
/*
* 'click': 요소를 클릭했을 때 발생
* 'keydown': 키보드의 키를 눌렀을 때 발생
* 'load': 페이지 로딩이 완료되었을 때 발생
* 'mouseover': 마우스 포인터가 요소 위로 이동했을 때 발생
*/
이벤트를 사용하는 이유
사용자 행동에 대응
- 사용자가 버튼을 클릭하거나 입력하면 그에 따른 반응을 보여줄 수 있다.
- 예를 들어, "제출" 버튼을 클릭하면 데이터를 서버에 전송하고,
"취소" 버튼을 클릭하면 입력된 내용 초기화 할 수 있다.
동적인 UI 구현
- 사용자의 행동에 따라 UI를 변경 가능
- 예를 들어, 마우스를 가져다 대면 색상이 변경되거나,
클릭하면 새로운 창이 열리는 등의 효과 구현 가능
비동기 처리
- 이벤트를 사용하면 페이지의 새로고침 없이 서버로부터 데이터를 가져와 페이지에 반영 가능
- 이를 통해, 사용자 경험을 향상 가능
사용자 행동 추적
- 사용자가 어떤 요소를 클릭했는지, 어떤 페이지를 방문했는지 등의
정보를 추적하여 사용자 행동 분석에 활용 가능
장점과 단점
장점
사용자 경험 향상
- 이벤트를 활용하면 사용자의 동작에 따라 웹 페이지가 반응하므로 사용자 친화적인 웹 페이지를 만들 수 있다.
- 이를 통해 사용자 경험을 향상 가능
동적인 웹 페이지 구현
- 이벤트를 통해 웹 페이지의 요소를 동적으로 변경하거나,
새로운 데이터를 로드, 이를 통해 동적인 웹 페이지 구현 가능
비동기 처리 가능
- 이벤트를 사용하면 페이지의 새로고침 없이 서버로부터 데이터를 가져와 페이지에 반영 가능
- 이를 통해 페이지의 로딩 시간을 줄이고 사용자 경험을 향상 가능
사용자 행동 추적
- 이벤트를 통해 사용자가 어떤 요소를 클릭했는지, 어떤 페이지를
방문했는지 등의 정보를 추적하여 사용자 행동 분석에 활용 가능
단점
고드 복잡도 증가
- 이벤트 핸들러가 많아질수록 코드가 복잡해지고 관리하기 어려울 수 있다.
- 이를 해결하기 위해 이벤트 위임과 같은 기법을 사용하거나, 적절한 코드 구조를 설계하는 것이 중요
브라우저 호환성 문제
- 이벤트 처리 방식은 브라우저마다 약간씩 다를 수 있다.
- 이로 인해 동일한 이벤트가 다른 브라우저에서 다르게 작동할 수 있다.
- 이를 해결하기 위해 jQuery와 같은 라이브러리를 사용하거나, 브라우저 호환성을 고려한 코드 작성이 중요
메모리 누수 가능성
- 이벤트 핸들러를 제대로 제거하지 않으면 메모리 누수가 발생 가능
- 이벤트 핸들러를 더 이상 사용하지 않을 때는 반드시 제거
이벤트 종류
Mouse Events(마우스 이벤트)
종류
마우스 이벤트 종류 | 마우스 동작에 의해 발생하는 이벤트 |
click | 사용자가 요소를 클릭했을 때 발생 |
dblclick | 사용자가 요소를 더블 클릭했을 때 발생 |
mouseover | 마우스 포인터가 요소 위로 이동했을 때 발생 |
mouseout | 마우스 포인트가 요소 범위를 벗어났을 때 발생 |
mousemove | 마우스 포인터가 요소 위에서 움직였을때 발생 |
예시
let elem = document.querySelector("#myElement");
// 마우스 클릭 이벤트
elem.addEventListener("click", function() {
console.log("마우스 클릭 이벤트가 발생하였습니다.");
});
// 마우스 오버 이벤트
elem.addEventListener("mouseover", function() {
console.log("마우스 오버 이벤트가 발생하였습니다.");
});
Keyboard Events(키보드 이벤트)
종류
키보드 이벤트 종류 | 키보드 동작에 의해 발생하는 이벤트 |
keydown | 키보드의 키를 눌렀을 때 발생 |
keyup | 키보드의 키를 눌렀다가 뗐을 때 발생 |
keypress | 키보드의 키를 눌렀을 때 발생, keydown과 keyup 사이에 발생 |
예시
// 키보드 누름 이벤트
document.addEventListener("keydown", function(event) {
console.log(`키 '${event.key}'가 눌렸습니다.`);
});
// 키보드 뗌 이벤트
document.addEventListener("keyup", function(event) {
console.log(`키 '${event.key}'가 떼어졌습니다.`);
});
Form Events(폼 이벤트)
종류
폼 이벤트 종류 | 폼 요소와 관련된 동작에 의해 발생하는 이벤트 |
submit | 폼 데이터가 제출될 때 발생 |
change | 사용자가 입력 필드의 값을 변경했을 때 발생 |
focus | 요소가 포커스를 얻었을때 발생 |
blur | 요소가 포커스를 잃었을 때 발생 |
예시
let form = document.querySelector("form");
// 폼 제출 이벤트
form.addEventListener("submit", function(event) {
event.preventDefault(); // 폼 제출을 막음
console.log("폼이 제출되었습니다.");
});
// 입력 요소 값 변경 이벤트
form.querySelector("input").addEventListener("change", function() {
console.log("입력값이 변경되었습니다.");
});
Window Events(윈도우 이벤트)
종류
윈도우 이벤트 종류 | 브라우저 창 또는 페이지 상태 변화에 의해 발생하는 이벤트 |
load | 페이지 로딩이 완료되었을 때 발생 |
resize | 브라우저 창의 크기를 변경했을 때 발생 |
scroll | 사용자가 스크롤 했을 때 발생 |
unload | 페이지를 벗어날 때 발생, 사용자가 다른 페이지로 이동하거나 브라우저를 닫을 때 발생 |
예시
// 페이지 로딩 완료 이벤트
window.addEventListener("load", function() {
console.log("페이지 로딩이 완료되었습니다.");
});
// 스크롤 이벤트
window.addEventListener("scroll", function() {
console.log("스크롤이 발생했습니다.");
});