Programming Language/JavaScript

[JavaScript]자바스크립트 이벤트 event : 이벤트 리스너, 이벤트 종류, preventDefault

영벨롭 2022. 4. 15. 15:09

[이벤트와 이벤트 리스너]

 

이벤트는 말 그대로 요소 또는 윈도우창에서 실행되는 특정 사건을 의미합니다. 

 

 이벤트 리스너는 해당 이벤트에 대해 대기하고 있다가, 이벤트가 발생하면 이벤트 리스너가 실행됩니다. 

 

<사용법 1>

const el = document.querySelector(요소 선택자);

el.addEventListener(이벤트, function () {
	실행코드
});

 

<사용법 2>

const el = document.querySelector(요소 선택자);

function function_name(){
	실행코드
};

el.addEventListener(이벤트, function_name);

 

<사용법 3>

const el = document.querySelector(요소 선택자);

el.on이벤트이름 = function () {
	실행 코드
};

 

 

 

[이벤트 종류]

 

  • mouse 이벤트
이벤트 설명
click 요소에 마우스 클릭
dbclick 요소에 마우스 더블클릭
mouseover 요소에 마우스 올림
mouseout 요소에 마우스 떠남
mousedown 요소에 마우스를 누름
mouseup 요소에 마우스를 뗌
mousemove 요소에 마우스를 움직였을 때
contextmenu 마우스 오른쪽 버튼을 눌렀을 때 나오는 메뉴가 나오기 전에 이벤트 발생

 

  • key 이벤트
이벤트 설명
keydown 키를 눌렀을 때
keyup 키를 떼었을 때
keypress 키를 누른 상태

 

  • form 이벤트
이벤트 설명
focus 요소가 활성화 되었을 때
blur 요소가 포커스 풀렸을 때
change 요소에 값이 변경 되었을 때
submit submit 버튼을 눌렀을 때
reset reset 버튼을 눌렀을 때
select input이나 textarea 요소 안의 텍스트를 드래그하여 선택했을 때

 

  • 기타 이벤트
이벤트 설명
load 페이지의 로딩이 완료되었을 때
abort 이미지의 로딩이 중단되었을 때
unload 페이지가 다른 곳으로 이동될 때
resize 요소에 사이즈가 변경되었을 때
scroll 스크롤바를 움직였을 때
copy 복사했을 때
online wifi에 연결 되었을 때
offline wifi에 연결 되지 않았을 때

 

 

 

 

 

[이벤트 사용해보기]

 

 <div> 태그로 만들어진 오렌지색 박스를 클릭하면 콘솔창에 Click!이라고 작성되고 박스의 색상이 로열블루색으로 바뀌는 코드를 작성하겠습니다. 

 

 

 

 

[더 나아가기 - event.preventDefault()]

 

 <a> 태그나 <submit> 태그와 같은 태그들은 특정 기능을 가지고 있습니다. 

 

 <a> 태그는 특정 사이트로 이동하고, <submit> 태그는 값을 전송하면서 창이 새로고침 되는 기능을 갖고 있죠!

 

 이때, 이러한 태그의 이벤트 기능을 동작하지 않도록 막을 수 있는 것이 preventDefault 입니다. 

 

 

  <a> 태그를 클릭해도 해당 href 링크로 이동하지 않게 하기 

 

<a> 태그를 클릭하면 해당 링크의 주소를 콘솔창에 띄우는 코드를 작성하겠습니다. 

 

먼저 preventDefault를 사용하지 않게 되면 링크의 주소가 콘솔창에 나오긴 하지만, 해당 링크로 이동하게 되면서 콘솔창에서 사라집니다. 

 

<body>
  <a href="https://google.com">
    구글로 이동하기
  </a>
</body>

 

const el = document.querySelector('a');

function onClick(event) {
  console.log(el.href);
}

el.addEventListener('click', onClick);

 

 

 

이제 preventDefault를 추가해보도록 하겠습니다. 

 

const el = document.querySelector('a');

function onClick(event) {
  event.preventDefault();
  console.log(el.href);
}

el.addEventListener('click', onClick);

 

 

 <a> 태그가 클릭 되었지만 해당 링크로 이동하지 않고, 링크의 주소가 콘솔창에 잘 나타나는 것을 확인할 수 있습니다. 

반응형