본문 바로가기

Language/JavaScript(ES6)

[Javascript] 마우스 이벤트

이벤트 타입

웹브라우저는 마우스와 관련해서 다양한 이벤트 타입을 지원한다.

  • click
    클릭했을 때 발생하는 이벤트. 
  • dblclick
    더블클릭을 했을 때 발생하는 이벤트
  • mousedown
    마우스를 누를 때 발생
  • mouseup
    마우스버튼을 땔 때 발생
  • mousemove
    마우스를 움직일 때
  • mouseover
    마우스가 엘리먼트에 진입할 때 발생
  • mouseout
    마우스가 엘리먼트에서 빠져나갈 때 발생
  • contextmenu
    컨텍스트 메뉴가 실행될 때 발생

키보드 조합

마우스 이벤트가 호출될 때 특수키(alt, ctrl, shift)가 눌려진 상태를 감지해야 한다면 이벤트 객체의 프로퍼티를 사용한다. 이 때 사용하는 프로퍼티는 아래와 같다.

  • event.shiftKey
  • event.altKey
  • event.ctrlKey

마우스 포인터 위치

마우스 이벤트와 관련한 작업에서는 마우스 포인터의 위치를 알아내는 것이 중요할 때가 있는데 이런 경우 이벤트 객체의 clientX와 clientY를 사용한다..


<script>
var t = document.getElementById('target');
function handler(event){
var info = document.getElementById('elm'+event.type);
var time = new Date();
var timestr = time.getMilliseconds();
info.innerHTML = (timestr);
if(event.altKey){
document.getElementById('elmaltkey').innerHTML = timestr;
}
if(event.ctrlKey){
document.getElementById('elmctrlkey').innerHTML = timestr;
}
if(event.shiftKey){
document.getElementById('elmshiftKey').innerHTML = timestr;
}
document.getElementById('elemclientx').innerHTML = event.clientX;
document.getElementById('elemclienty').innerHTML = event.clientY;
}
t.addEventListener('click', handler);
t.addEventListener('dblclick', handler);
t.addEventListener('mousedown', handler);
t.addEventListener('mouseup', handler);
t.addEventListener('mousemove', handler);
t.addEventListener('mouseover', handler);
t.addEventListener('mouseout', handler);
t.addEventListener('contextmenu', handler);
</script>
</body>
</html>


위 코드는 target을 id로 가진 엘리먼트에 마우스 이벤트를 발생시키는 기능을 가진다.


h함수 handler는 event객체를 가지며


info 값으로 ele+이벤트의 타입(click, dbclick...)


time 값으로 현재 date


timestr값으로 getMilliseconds(현재 시간을 밀리세컨드로 만든 값)


을 받았다.


그리고 info에 timestr값을 출력했다.


그리고 추가적으로 


가정문은 키보드 이벤트를


그 아래는 마우스의 x,y위치를 리턴한다.

'Language > JavaScript(ES6)' 카테고리의 다른 글

[JavaScript] JSON(1)  (0) 2018.09.08
[Javascript]Ajax  (0) 2018.09.08
[Javascript]문서 로딩  (0) 2018.09.08
[Javascript] Form  (0) 2018.09.08
[JavaScript] 브라우저 이벤트 기본동작의 취소  (0) 2018.09.05