MouseEvent
는 사용자가 포인팅 장치(예: 마우스)와 상호 작용함으로써 발생하는 이벤트를 나타낸다.[click](https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event)
, [dblclick](https://developer.mozilla.org/en-US/docs/Web/API/Element/dblclick_event)
, [mouseup](https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseup_event)
등이 있다.MouseEvent
는 [UIEvent](https://developer.mozilla.org/en-US/docs/Web/API/UIEvent)
에서 파생되고, 이는 [Event](https://developer.mozilla.org/en-US/docs/Web/API/Event)
에서 파생된다.메소드는 이전 버전과의 호환성을 위해 유지 되지만 객체 [MouseEvent.initMouseEvent()](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/initMouseEvent)
생성은 생성자를 MouseEvent
사용하여 수행되어야 한다.body{
background-color: aqua;
}
.box {
width: 400px;
height: 250px;
border: 2px solid darkblue;
background-color: red;
color: white;
font:
16px "Zilla",
"Open Sans",
"Helvetica",
"Arial",
sans-serif;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>vanillaJS</title>
</head>
<body>
<div class = "box">
<p>마우스를 움직이세요!</p>
<p><code>pageX</code>: <span id="x">n/a</span></p>
<p><code>pageY</code>: <span id="y">n/a</span></p>
</div>
<script src="app.js"></script>
</body>
</html>
// 좌표 가져오기
const box = document.querySelector(".box");
const pageX = document.getElementById("x");
const pageY = document.getElementById("y");
/*
1. pageX
인터페이스의 읽기 pageX전용 속성은
MouseEvent전체 문서의 왼쪽 가장자리를 기준으로
마우스를 클릭한 X(가로) 좌표(픽셀 단위)를 반환
2. pageX
인터페이스의 읽기 pageY전용 속성은
MouseEvent전체 문서를 기준으로 이벤트의 Y(세로) 좌표를 픽셀 단위로 반환합니다.
이 속성은 페이지의 수직 스크롤을 고려
*/
function updateDisplay(event){
pageX.innerText = event.pageX;
pageY.innerText = event.pageY;
}
function alertEnter(){
alert("마우스가 영역 안으로 들어옵니다.");
}
function alterLeave(){
alert("마우스가 영역 밖으로 나갑니다.");
}
// mousemove > 마우스가 움직일 때
box.addEventListener("mousemove", updateDisplay);
// mouseenter > 영역 안으로 마우스가 들어갈 때
box.addEventListener("mouseenter", alertEnter);
// mouseleave > 마우스가 나갈 때
box.addEventListener("mouseleave", alterLeave);
⇒ pageX
인터페이스의 읽기 pageX전용 속성은 MouseEvent전체 문서의 왼쪽 가장자리를 기준으로 마우스를 클릭한 X(가로) 좌표(픽셀 단위)를 반환
⇒ pageX
인터페이스의 읽기 pageY전용 속성은 MouseEvent전체 문서를 기준으로 이벤트의 Y(세로) 좌표를 픽셀 단위로 반환합니다. 이 속성은 페이지의 수직 스크롤을 고려합니다.
screenX
인터페이스의 읽기 전용 속성은 화면 좌표[MouseEvent](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent)
에서 마우스 포인터의 수평 좌표(오프셋)를 제공screenY
인터페이스의 읽기 전용 속성은 화면 좌표[MouseEvent](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent)
에서 마우스 포인터의 수직 좌표(오프셋)를 제공<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>vanillaJS</title>
</head>
<body>
<div class = "box">
<p>마우스를 움직이세요!</p>
<p><code>screenX</code>: <span id="x">n/a</span></p>
<p><code>screenY</code>: <span id="y">n/a</span></p>
</div>
<script src="app.js"></script>
</body>
</html>
// 좌표 가져오기
const box = document.querySelector(".box");
const screenX = document.getElementById("x");
const screenY = document.getElementById("y");
function updateDisplay(event){
screenX.innerText = event.screenX;
screenY.innerText = event.screenY;
}
function alertEnter(){
alert("마우스가 영역 안으로 들어옵니다.");
}
function alterLeave(){
alert("마우스가 영역 밖으로 나갑니다.");
}
// mousemove > 마우스가 움직일 때
box.addEventListener("mousemove", updateDisplay);
// mouseenter > 영역 안으로 마우스가 들어갈 때
box.addEventListener("mouseenter", alertEnter);
// mouseleave > 마우스가 나갈 때
box.addEventListener("mouseleave", alterLeave);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>vanillaJS</title>
</head>
<body>
<p>
<label><input type="checkbox" id="checkbox" /> Checked</label>
</p>
<p>
<button id="button">Click me to send a MouseEvent to the checkbox</button>
</p>
<script src="app.js"></script>
</body>
</html>
function simulateClick() {
// Get the element to send a click event
const cb = document.getElementById("checkbox");
// Create a synthetic click MouseEvent
let evt = new MouseEvent("click");
// Send the event to the checkbox element
/*
dispatchEvent()의 메서드는 객체 에 EventTarget를 전송하여
Event(동기적으로) 영향을 받는 이벤트 리스너를 적절한 순서로 호출
*/
cb.dispatchEvent(evt);
}
document.getElementById("button").addEventListener("click", simulateClick);