본문 바로가기

프로그래밍/JavaScript & jQuery

자바스크립트 이벤트 종류와 이벤트리스너

(1) 자바스크립트 이벤트리스너

  • 표준브라우저와 IE의 이벤트리스너는 다르기 때문에 크로스브라우징을 고려해야한다.
  • 표준브라우저와 IE11은 addEventListener()메소드, IE10 ~ IE9는 addEventListener(), attachEvent()둘다 지원한다.
    IE8이하는 attachEvent()메소드를 사용한다.

① 표준브라우저에서 이벤트리스너

아래는 이벤트 실행시, 정의된 함수를 실행하는 코드 – 첫번째 매개변수는 이벤트, 두번째 매개변수는 함수

아래는 이벤트 실행시, 익명함수를 실행하는 코드 – 첫번째 매개변수는 이벤트, 두번째 매개변수는 실행될 익명함수

② IE8이하에서 이벤트리스너

아래는 이벤트 실행시, 정의된 함수를 실행하는 코드 – 첫번째 매개변수는 이벤트, 두번째 매개변수는 함수 IE는 이벤트앞에 on을 붙여줘야한다.

아래는 이벤트 실행시, 익명함수를 실행하는 코드 – 첫번째 매개변수는 이벤트, 두번째 매개변수는 실행될 익명함수

③ 크로스브라우징 방법

표준브라우저와 IE는 이벤트리스너 메소드가 다르기 때문에 크로스브라우징 코드가 필요하다. 간단하게 if문으로 해당 메소드가 있는지 확인하여 브라우저별로 분기를 하는 방법이다.

아래는 이벤트 실행시, 정의된 함수를 실행하는 크로스브라우징 코드

아래는 이벤트 실행시, 익명함수를 실행하는 크로스브라우징 코드

(2) 자바스크립트 이벤트 종류

자주 사용하는 자바스크립트 이벤트 종류에 대해 정리해봤다.

  • click – 마우스버튼을 클릭하고 버튼에서 손가락을 떼면 발생한다.
  • mouseover – 마우스를 HTML요소 위에 올리면 발생한다.
  • mouseout – 마우스가 HTML요소 밖으로 벗어날 때 발생한다.
  • mousedown – 클릭을 하기 위해 마우스버튼을 누르고 아직 떼기 전인 그 순간, HTML요소를 드래그할 때 사용할 수 있다.
  • mouseup – 마우스버튼을 떼는 그 순간, 드래그한 HTML요소를 어딘가에 놓을 때 사용할 수 있다.
  • mousemove – 마우스가 움직일때마다 발생한다. 마우스커서의 현재 위치를 계속 기록하는 것에 사용할 수 있다.
  • focus – HTML요소에 포커스가 갔을때 발생한다.
  • blur – HTML요소가 포커스에서 벗어났을때 발생한다.
  • keypress – 키를 누르는 순간에 발생하고 키를 누르고 있는 동안 계속해서 발생한다.
  • keydown – 키를 누를 때 발생한다.
  • keyup – 키를 눌렀다가 떼는 순간에 발생한다.
  • load – 웹페이지에서 사용할 모든 파일의 다운로드가 완료되었을때 발생한다.
  • resize – 브라우저 창의 크기를 조절할때 발생한다.
  • scroll – 스크롤바를 드래그하거나 키보드(up, down)를 사용하거나 마우스 휠을 사용해서 웹페이지를 스크롤할 때 발생한다. 페이지에 스크롤바가 없다면 이벤트는 발생하지 않다.
  • unload – 링크를 클릭해서 다른 페이지로 이동하거나 브라우저 탭을 닫을 때 혹은 브라우저 창을 닫을 때 이벤트가 발생한다.
  • change – 폼 필드의 상태가 변경되었을 때 발생한다. 라디오 버튼을 클릭하거나 셀렉트 박스에서 값을 선택하는 경우를 예로 들수 있다.