HTML DOM UiEvent 객체는 사용자가 HTML 요소와 상호작용할 때 발생하는 이벤트를 나타내는 인터페이스입니다. 클릭, 키보드 입력 등 사용자의 행동으로 인해 트리거되는 모든 UI 이벤트의 기반이 되는 객체라고 할 수 있습니다.
UiEvent 객체의 주요 속성
UiEvent 객체는 다음과 같은 속성을 제공합니다.
| 속성 | 설명 |
|---|---|
| detail | 이벤트에 대한 세부 정보를 담고 있는 숫자를 반환합니다. 예를 들어 마우스 클릭 이벤트에서는 연속 클릭 횟수를 나타냅니다. |
| view | 이벤트가 발생한 Window 객체에 대한 참조를 반환합니다. |
detail 속성 활용 예제
아래 예제는 detail 속성을 활용하여 노란색 원을 연속으로 클릭하면 클릭 횟수가 점수로 기록되고, 최고 점수가 갱신되는 간단한 게임입니다.
예제 코드
<!DOCTYPE html>
<html>
<head>
<title>HTML DOM UiEvent detail</title>
<style>
form {
width:70%;
margin: 0 auto;
text-align: center;
}
* {
padding: 2px;
margin:5px;
}
input[type="button"] {
border-radius: 10px;
}
#playArea {
display: inline-block;
border-radius: 50%;
background-color: #DC3545;
width: 50px;
height: 50px;
border: 3px solid #AC3509;
}
#clickOn {
border: 3px solid #F0FF33;
margin: 15px auto;
border-radius: 50%;
background-color: #FFF933;
width: 10px;
height: 10px;
}
h2 {
display: inline-block;
}
</style>
</head>
<body>
<form>
<fieldset>
<legend>HTML-DOM-UiEvent-detail</legend>
<h2 id="highScore">High Score: 0</h2>
<h2 id="currScore">Current Score: 0</h2><br>
<div id="playArea"><div onclick="getHighScore(event)" id="clickOn"></div></div><br>
</fieldset>
</form>
<script>
var clickOn = document.getElementById("clickOn");
var playDisplay = document.getElementById("playArea");
var highScore = document.getElementById("highScore");
var currScore = document.getElementById("currScore");
var high = 0, score = 0;
function getHighScore(event) {
var score = event.detail;
currScore.textContent = 'Current Score: '+score;
if(score > high){
highScore.textContent = 'High Score: '+score;
high = score;
}
}
</script>
</body>
</html>
실행 결과
노란색 div 요소를 클릭하기 전 화면은 아래와 같습니다.

노란색 div 요소를 계속 클릭한 후, 현재 점수와 최고 점수가 함께 증가하는 것을 확인할 수 있습니다.

노란색 div 요소를 이전보다 적은 횟수로 클릭한 후, 현재 점수는 감소하지만 기존의 최고 점수는 그대로 유지됩니다.

정리
이처럼 UiEvent의 detail 속성은 사용자가 요소를 몇 번 클릭했는지와 같은 이벤트 관련 세부 정보를 숫자로 제공하며, view 속성은 이벤트가 발생한 창(Window) 객체를 참조할 때 유용하게 사용됩니다. 두 속성을 잘 활용하면 사용자 상호작용 기반의 동적인 웹 페이지를 손쉽게 구현할 수 있습니다.