UI ì´ë²¤í¸
ê°ë ë° ì¬ì©ë²
UI ì´ë²¤í¸ APIë ë§ì°ì¤ ë° í¤ë³´ë ì ë ¥ê³¼ ê°ì ì¬ì©ì ìí¸ ìì©ì ì²ë¦¬í기 ìí ìì¤í ì ì ìí©ëë¤. ì¬ê¸°ìë ë¤ìì´ í¬í¨ë©ëë¤.
- í¤ ì
ë ¥ì´ë ë§ì°ì¤ í´ë¦ê³¼ ê°ì í¹ì ì¬ì©ì ëìì ëí´ ë°ìíë ì´ë²¤í¸. ì´ë¬í ì´ë²¤í¸ì ëë¶ë¶ì
Elementì¸í°íì´ì¤ìì ë°ìíì§ë§, 리ìì¤ ë¡ë© ë° ì¸ë¡ë©ê³¼ ê´ë ¨ë ì´ë²¤í¸ëWindowì¸í°íì´ì¤ìì ë°ìí©ëë¤. - ì´ë¬í ì´ë²¤í¸ì í¸ë¤ë¬ì ì ë¬ëë ì´ë²¤í¸ ì¸í°íì´ì¤. ì´ ì¸í°íì´ì¤ë¤ì
Event를 ììë°ê³ ì¬ì©ì ìí¸ ìì© ì íì í¹íë ì¶ê° ì 보를 ì ê³µí©ëë¤. ì를 ë¤ì´,KeyboardEventëkeydownì´ë²¤í¸ í¸ë¤ë¬ì ì ë¬ëì´ ë른 í¤ì ëí ì 보를 ì ê³µí©ëë¤.
ì¸í°íì´ì¤
CompositionEvent-
ì¡°í© ì´ë²¤í¸ì í¸ë¤ë¬ì ì ë¬ë©ëë¤. ì¡°í© ì´ë²¤í¸ë ì¬ì©ìê° ë¬¼ë¦¬ì í¤ë³´ëìì ì¬ì©í ì ìë 문ì를 ì ë ¥í ì ìê² í´ì¤ëë¤.
FocusEvent-
ììê° í¬ì»¤ì¤ë¥¼ ë°ê±°ë ìë ê²ê³¼ ê´ë ¨ë í¬ì»¤ì¤ ì´ë²¤í¸ì í¸ë¤ë¬ì ì ë¬ë©ëë¤.
InputEvent-
ì¬ì©ìê° ì ë ¥ì íë ê²ê³¼ ê´ë ¨ë ì ë ¥ ì´ë²¤í¸ì í¸ë¤ë¬ì ì ë¬ë©ëë¤. ì를 ë¤ì´,
<input>ìì를 ì¬ì©í ëì ëë¤. KeyboardEvent-
í¤ë³´ë up/down ì´ë²¤í¸ì í¸ë¤ë¬ì ì ë¬ë©ëë¤.
MouseEvent-
ë§ì°ì¤ ì´ë, ë§ì°ì¤ ì¤ë² ë° ìì, ë§ì°ì¤ ë²í¼ ì ëë ë¤ì´ì í¬í¨í ë§ì°ì¤ ì´ë²¤í¸ì ì´ë²¤í¸ í¸ë¤ë¬ì ì ë¬ë©ëë¤.
auxclick,click, ë°dblclickì´ë²¤í¸ëPointerEventê°ì²´ë¥¼ ì ë¬ë°ìµëë¤. MouseScrollEvent-
ì¤í¬ë¡¤ ì´ë²¤í¸ë¥¼ ìí ë ì´ì ì¬ì©ëì§ ìë Firefox ì ì©ì ë¹íì¤ ì¸í°íì´ì¤ì ëë¤. ëì
WheelEvent를 ì¬ì©íì¸ì. MutationEvent-
DOM ë³ê²½ ì¬íì ëí ì림ì ì ê³µíëë¡ ì¤ê³ë ë³ê²½ ì´ë²¤í¸ í¸ë¤ë¬ì ì ë¬ë©ëë¤. íì¬ë ë ì´ì ì¬ì©ëì§ ììµëë¤. ëì
MutationObserver를 ì¬ì©íì¸ì. UIEvent-
ë¤ë¥¸ UI ì´ë²¤í¸ê° ììë°ë 기본 ì¸í°íì´ì¤ì´ë©°,
loadìunloadì ê°ì ì¼ë¶ ì´ë²¤í¸ì ì ë¬ëë ì´ë²¤í¸ ì¸í°íì´ì¤ì´ê¸°ë í©ëë¤. WheelEvent-
ì¬ì©ìê° ë§ì°ì¤ í ì´ë í°ì¹í¨ëì ê°ì ì ì¬í ì¬ì©ì ì¸í°íì´ì¤ ì»´í¬ëí¸ë¥¼ íì ìí¬ ë ë°ìíë
wheelì´ë²¤í¸ì í¸ë¤ë¬ì ì ë¬ë©ëë¤.
ì´ë²¤í¸
abort-
리ìì¤ ë¡ë©ì´ ì¤ë¨ëìì ë ë°ìí©ëë¤(ì: ì¬ì©ìê° ì·¨ìí ê²½ì°).
auxclick-
ì¬ì©ìê° ì£¼ í¬ì¸í° ë²í¼ì´ ìë ë¤ë¥¸ ë²í¼ì í´ë¦íì ë ë°ìí©ëë¤.
beforeinput-
DOMì´ ì¬ì©ì ì ë ¥ì¼ë¡ ì ë°ì´í¸ë기 ì§ì ì ë°ìí©ëë¤.
blur-
ììê° í¬ì»¤ì¤ë¥¼ ììì ë ë°ìí©ëë¤.
click-
ì¬ì©ìê° ì£¼ í¬ì¸í° ë²í¼ì í´ë¦íì ë ë°ìí©ëë¤.
compositionend-
í ì¤í¸ ì¡°í© ìì¤í (ì: ìì±-í ì¤í¸ ë³í기)ì´ ì¸ì ì ì¢ ë£íì ë ë°ìí©ëë¤. ì를 ë¤ì´, ì¬ì©ìê° ì´ë¥¼ ë«ìì ëì ëë¤.
compositionstart-
ì¬ì©ìê° í ì¤í¸ ì¡°í© ìì¤í ê³¼ ì ì¸ì ì ììíì ë ë°ìí©ëë¤.
compositionupdate-
í ì¤í¸ ì¡°í© ìì¤í ì´ ì 문ìë¡ í ì¤í¸ë¥¼ ì ë°ì´í¸í ë ë°ìíë©°,
CompositionEventìdataìì± ì ë°ì´í¸ì ë°ìë©ëë¤. -
컨í ì¤í¸ ë©ë´ê° í¸ì¶ë기 ì§ì ì ë°ìí©ëë¤.
dblclick-
ì¬ì©ìê° ì£¼ í¬ì¸í° ë²í¼ì ëë¸ í´ë¦íì ë ë°ìí©ëë¤.
error-
리ìì¤ ë¡ë©ì ì¤í¨íê±°ë ì²ë¦¬í ì ìì ë ë°ìí©ëë¤(ì: ì´ë¯¸ì§ê° ì못ëìê±°ë ì¤í¬ë¦½í¸ì ì¤ë¥ê° ìë ê²½ì°).
focus-
ììê° í¬ì»¤ì¤ë¥¼ ë°ìì ë ë°ìí©ëë¤.
focusin-
ììê° í¬ì»¤ì¤ë¥¼ ë°ê¸° ì§ì ì ë°ìí©ëë¤.
focusout-
ììê° í¬ì»¤ì¤ë¥¼ ì기 ì§ì ì ë°ìí©ëë¤.
input-
DOMì´ ì¬ì©ì ì ë ¥ì¼ë¡ ì ë°ì´í¸ë ì§íì ë°ìí©ëë¤(ì: ì¼ë¶ í ì¤í¸ ì ë ¥).
keydown-
ì¬ì©ìê° í¤ë¥¼ ëë ì ë ë°ìí©ëë¤.
keypress-
ì¬ì©ìê° í¤ë¥¼ ëë ì ë ë°ìíì§ë§, í¤ê° 문ì ê°ì ìì±íë ê²½ì°ìë§ ë°ìí©ëë¤. ëì
keydownì ì¬ì©íì¸ì. keyup-
ì¬ì©ìê° í¤ë¥¼ ëìì ë ë°ìí©ëë¤.
load-
ì ì²´ íì´ì§ê° ë¡ëëìì ë ë°ìí©ëë¤. ì¤íì¼ìí¸ì ì´ë¯¸ì§ ê°ì 모ë ì¢ ì 리ìì¤ë¥¼ í¬í¨í©ëë¤.
mousedown-
í¬ì¸í°ê° ìì ìì ìë ëì ì¬ì©ìê° ë§ì°ì¤ë ë¤ë¥¸ í¬ì¸í ì¥ì¹ì ë²í¼ì ëë ì ë ë°ìí©ëë¤.
mouseenter-
ë§ì°ì¤ë ë¤ë¥¸ í¬ì¸í ì¥ì¹ê° ììë ê·¸ ìì ì¤ íëì ê²½ê³ ìì¼ë¡ ì´ëíì ë ë°ìí©ëë¤.
mouseleave-
ë§ì°ì¤ë ë¤ë¥¸ í¬ì¸í ì¥ì¹ê° ììì ê·¸ 모ë ììì ê²½ê³ ë°ì¼ë¡ ì´ëíì ë ë°ìí©ëë¤.
mousemove-
ìì ììì ë§ì°ì¤ë ë¤ë¥¸ í¬ì¸í ì¥ì¹ê° ì´ëí ë ë°ìí©ëë¤.
mouseout-
ë§ì°ì¤ë ë¤ë¥¸ í¬ì¸í ì¥ì¹ê° ììì ê²½ê³ ë°ì¼ë¡ ì´ëíì ë ë°ìí©ëë¤.
mouseover-
ë§ì°ì¤ë ë¤ë¥¸ í¬ì¸í ì¥ì¹ê° ìì ìë¡ ì´ëíì ë ë°ìí©ëë¤.
mouseup-
í¬ì¸í°ê° ìì ìì ìë ëì ì¬ì©ìê° ë§ì°ì¤ë ë¤ë¥¸ í¬ì¸í ì¥ì¹ì ë²í¼ì ëìì ë ë°ìí©ëë¤.
unload-
문ìë ìì 리ìì¤ê° ì¸ë¡ëë ë ë°ìí©ëë¤.
wheel-
ì¬ì©ìê° ë§ì°ì¤ í ì´ë í°ì¹í¨ëì ê°ì ì ì¬í ì¬ì©ì ì¸í°íì´ì¤ ì»´í¬ëí¸ë¥¼ íì ìí¬ ë ë°ìí©ëë¤.
ìì
>ë§ì°ì¤ ì´ë²¤í¸
ì´ ìì ë ì´ë²¤í¸ê° ìì±ë Xì Y ì¢íì í¨ê» ë§ì°ì¤ ì´ë²¤í¸ë¥¼ 기ë¡í©ëë¤. ë ¸ëìê³¼ 빨ê°ì ì¬ê°í ìì¼ë¡ ë§ì°ì¤ë¥¼ ì´ëíê³ , í´ë¦íê±°ë ëë¸ í´ë¦í´ ë³´ì¸ì.
HTML
<div id="outer">
<div id="inner"></div>
</div>
<div id="log">
<pre id="contents"></pre>
<button id="clear">ë¡ê·¸ ì§ì°ê¸°</button>
</div>
CSS
body {
display: flex;
gap: 1rem;
}
#outer {
height: 200px;
width: 200px;
display: flex;
justify-content: center;
align-items: center;
background-color: yellow;
}
#inner {
height: 100px;
width: 100px;
background-color: red;
}
#contents {
height: 150px;
width: 250px;
border: 1px solid black;
padding: 0.5rem;
overflow: scroll;
}
JavaScript
const outer = document.querySelector("#outer");
const inner = document.querySelector("#inner");
const contents = document.querySelector("#contents");
const clear = document.querySelector("#clear");
let lines = 0;
outer.addEventListener("click", (event) => {
log(event);
});
outer.addEventListener("dblclick", (event) => {
log(event);
});
outer.addEventListener("mouseover", (event) => {
log(event);
});
outer.addEventListener("mouseout", (event) => {
log(event);
});
outer.addEventListener("mouseenter", (event) => {
log(event);
});
outer.addEventListener("mouseleave", (event) => {
log(event);
});
function log(event) {
const prefix = `${String(lines++).padStart(3, "0")}: `;
const line = `${event.type}(${event.clientX}, ${event.clientY})`;
contents.textContent = `${contents.textContent}${prefix}${line}\n`;
contents.scrollTop = contents.scrollHeight;
}
clear.addEventListener("click", () => {
contents.textContent = "";
lines = 0;
});
ê²°ê³¼
í¤ë³´ë ë° ì ë ¥ ì´ë²¤í¸
ì´ ìì ë keydown, beforeinput, ê·¸ë¦¬ê³ input ì´ë²¤í¸ë¥¼ 기ë¡í©ëë¤. í
ì¤í¸ ììì ì
ë ¥í´ ë³´ì¸ì. Shiftì ê°ì í¤ë keydown ì´ë²¤í¸ë ìì±íì§ë§ input ì´ë²¤í¸ë ìì±íì§ ìëë¤ë ì ì 주목íì¸ì.
HTML
<textarea id="story" rows="5" cols="33"></textarea>
<div id="log">
<pre id="contents">
<button id="clear">ë¡ê·¸ ì§ì°ê¸°</button>
</div>
CSS
body {
display: flex;
gap: 1rem;
}
#story {
padding: 0.5rem;
}
#contents {
height: 150px;
width: 250px;
border: 1px solid black;
padding: 0.5rem;
overflow: scroll;
}
JavaScript
const story = document.querySelector("#story");
const contents = document.querySelector("#contents");
const clear = document.querySelector("#clear");
let lines = 0;
story.addEventListener("keydown", (event) => {
log(`${event.type}(${event.key})`);
});
story.addEventListener("beforeinput", (event) => {
log(`${event.type}(${event.data})`);
});
story.addEventListener("input", (event) => {
log(`${event.type}(${event.data})`);
});
function log(line) {
const prefix = `${String(lines++).padStart(3, "0")}: `;
contents.textContent = `${contents.textContent}${prefix}${line}\n`;
contents.scrollTop = contents.scrollHeight;
}
clear.addEventListener("click", () => {
contents.textContent = "";
lines = 0;
});
ê²°ê³¼
ëª ì¸ì
| Specification |
|---|
| UI Events > |