Skip to content

Commit 759bee0

Browse files
authored
Merge pull request #55 from InSeong-So/main
โœ๏ธ ์ด๋ฒคํŠธ ์ถ”๊ฐ€, ์ˆ˜์ • ํ•„์š”
2 parents 4f98f9b + 85ec10e commit 759bee0

File tree

3 files changed

+225
-0
lines changed

3 files changed

+225
-0
lines changed

โ€ŽBrowser/event.mdโ€Ž

Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
๋ธŒ๋ผ์šฐ์ €๋Š” ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์‚ฌ๊ฑด์ด ๋ฐœ์ƒํ•˜๋ฉด ์ด๋ฅผ ๊ฐ์ง€ํ•ด์„œ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ์™€ ๋Œ€์‘ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์ฃ . ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ด…์‹œ๋‹ค.
2+
3+
<br>
4+
5+
## ์ด๋ฒคํŠธ ๋“œ๋ฆฌ๋ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
6+
> ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ(Event Handler), ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ๋ธŒ๋ผ์šฐ์ €์— ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ˜ธ์ถœ์„ ์œ„์ž„ํ•˜๋Š” ๊ฒƒ์„ ์ด๋ฒคํŠธ **ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋ก**์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
7+
8+
์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ํŠน์ • ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์‹ถ๋‹ค ๊ฐ€์ •ํ•ด๋ณผ๊นŒ์š”? ๋ฌธ์ œ๋Š” `์–ธ์ œ ํ˜ธ์ถœ์ด ๋˜๋Š”๊ฐ€`์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์–ธ์ œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•  ์ˆ˜ ์—†์œผ๋‹ˆ๊นŒ์š”. ๋‹คํ–‰ํžˆ ๋ธŒ๋ผ์šฐ์ €๋Š” ์‚ฌ์šฉ์ž์˜ ๋ฒ„ํŠผ ํด๋ฆญ์„ **๊ฐ์ง€**ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํด๋ฆญ ์ด๋ฒคํŠธ๋ฅผ **๋ฐœ์ƒ**์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ์ฃ . ํด๋ฆญ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํŠน์ • ํ•จ์ˆ˜(์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ)๋ฅผ ํ˜ธ์ถœํ•˜๋„๋ก ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ **์œ„์ž„**ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
9+
10+
์ด๋ ‡๊ฒŒ ์ด๋ฒคํŠธ์™€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ **์ƒํ˜ธ์ž‘์šฉ(Interfaction)** ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฒฐ๊ตญ ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์ด ์ด๋ฒคํŠธ ์ค‘์‹ฌ์œผ๋กœ ์ œ์–ด๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์„ `์ด๋ฒคํŠธ ๋“œ๋ฆฌ๋ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Event-driven Programming)`์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค.
11+
12+
<br>
13+
14+
## ์ด๋ฒคํŠธ ํƒ€์ž…
15+
> ์ด๋ฒคํŠธ ํƒ€์ž…(Event Type)์€ ์ด๋ฒคํŠธ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
16+
17+
์ด๋ฒคํŠธ ํƒ€์ž…์€ ์•ฝ 200์—ฌ ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, ์ƒ์„ธ ๋ชฉ๋ก์€ [์—ฌ๊ธฐ](https://developer.mozilla.org/ko/docs/Web/Events)์—์„œ ํ™•์ธํ•ด์ฃผ์„ธ์š”. ํฐ ๋งฅ๋ฝ์˜ ์ด๋ฒคํŠธ ์ข…๋ฅ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
18+
- ๋งˆ์šฐ์Šค(Mouse) ์ด๋ฒคํŠธ
19+
- ํ‚ค๋ณด๋“œ(Keyboard) ์ด๋ฒคํŠธ
20+
- ํฌ์ปค์Šค(Focus) ์ด๋ฒคํŠธ
21+
- ํผ(Form) ์ด๋ฒคํŠธ
22+
- ๊ฐ’ ๋ณ€๊ฒฝ(Change Value) ์ด๋ฒคํŠธ
23+
- DOM ๋ฎคํ…Œ์ด์…˜(Mutation) ์ด๋ฒคํŠธ
24+
- ๋ทฐ(View) ์ด๋ฒคํŠธ
25+
- ๋ฆฌ์†Œ์Šค(Resources) ์ด๋ฒคํŠธ
26+
27+
<br>
28+
29+
## ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋ก
30+
> ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ(Event Handler ๋˜๋Š” Event Listener)๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋ธŒ๋ผ์šฐ์ €์— ํ˜ธ์ถœ์„ ์œ„์ž„ํ•œ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
31+
32+
์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์— ์˜ํ•ด ํ˜ธ์ถœ๋  ํ•จ์ˆ˜๊ฐ€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์ด๋ฉฐ, ์ด๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์€ 3๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
33+
34+
<br>
35+
36+
### ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ
37+
> ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ ๊ฐ’์œผ๋กœ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋ฌธ ๋“ฑ์˜ ๋ฌธ(Statement)์„ ํ• ๋‹นํ•˜๋ฉด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.
38+
39+
HTML ์š”์†Œ ์ค‘์—๋Š” ์ด๋ฒคํŠธ์— ๋Œ€์‘ํ•˜๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๊ฐ€ ์žˆ๋Š”๋ฐ, on ์ ‘๋‘์‚ฌ์™€ ์ด๋ฒคํŠธ์˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ด๋ฒคํŠธ ํƒ€์ž…์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. `onclick`, `onchange`, `onfocus`์ฒ˜๋Ÿผ ๋ง์ด์ฃ . ์ด๋ฒคํŠธ ๋“ฑ๋ก ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
40+
```html
41+
<!DOCTYPE html>
42+
<html lang="en">
43+
44+
<head>
45+
<meta charset="UTF-8">
46+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
47+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
48+
<title>Document</title>
49+
</head>
50+
51+
<body>
52+
<button onclick="displayAlert('Hi!')">Click to Hi</button>
53+
<script>
54+
function displayAlert(greeting) {
55+
return alert(greeting);
56+
}
57+
</script>
58+
</body>
59+
60+
</html>
61+
```
62+
- ํ•จ์ˆ˜ ์ฐธ์กฐ๊ฐ€ ์•„๋‹Œ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋ฌธ ๋“ฑ์˜ **๋ฌธ**์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
63+
- ์ฝœ๋ฐฑ ํ•จ์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•จ์ˆ˜ ์ฐธ์กฐ๋ฅผ ๋“ฑ๋กํ•ด์•ผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
64+
- ๋งŒ์•ฝ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋ฌธ์„ ๋“ฑ๋กํ•˜๋ฉด ๊ทธ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋กœ ๋“ฑ๋ก๋˜๋ฏ€๋กœ, ๊ณ ์ฐจ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋ฌธ์ด๋ผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ๋ฌธ์˜ ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
65+
- **์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ ๊ฐ’์€ ์•”๋ฌต์ ์œผ๋กœ ์ƒ์„ฑ๋  ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์˜ ํ•จ์ˆ˜ ๋ชธ์ฒด๋ฅผ ์˜๋ฏธ**ํ•ฉ๋‹ˆ๋‹ค.
66+
```js
67+
// onclick="displayAlert('Hi!')" ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋Š”
68+
// ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ์˜ํ•ด ํŒŒ์‹ฑ๋˜์–ด ์•”๋ฌต์ ์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
69+
function onclick(event){
70+
displayAlert('Hi');
71+
}
72+
// ๊ทธ ํ›„ onclick ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœํผํ‹ฐ์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
73+
```
74+
75+
์ด์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” ์ด์œ ๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์— ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ์ฐธ์กฐ๋ฅผ ํ• ๋‹นํ•œ๋‹ค๋ฉด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์— ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ๊ณค๋ž€ํ•ด์ง€๊ฑฐ๋“ ์š”.
76+
```html
77+
// ๋„ˆ๋ฌด ๊ณค๋ž€ํ•ด์š”.
78+
<button onclick="displayAlert">
79+
Click to Hi
80+
</button>
81+
```
82+
83+
๋”ฐ๋ผ์„œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ ๊ฐ’์œผ๋กœ ์—ฌ๋Ÿฌ ๋ฌธ์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
84+
```html
85+
<button onclick="console.log('Hi'); alert('Hi!');">
86+
Click to Hi
87+
</button>
88+
```
89+
90+
๊ธฐ๋ณธ์ ์œผ๋กœ HTML๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ด€์‹ฌ์‚ฌ๊ฐ€ ๋‹ค๋ฅด๋ฏ€๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ CBD(Component Based Development)์˜ ๊ฒฝ์šฐ HTML, CSS, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ด€์‹ฌ์‚ฌ๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด์žˆ์ง€ ์•Š๊ณ  View๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋กœ ํŒ๋‹จํ•˜๋ฏ€๋กœ ํ˜ผ์žฌํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
91+
```html
92+
<!-- Angular.js -->
93+
<button (click)="handleClick($event)">
94+
Click
95+
</button>
96+
<!-- React.js -->
97+
<button onClick={handleClick}>
98+
Click
99+
</button>
100+
<!-- Vue.js -->
101+
<button on:click={handleClick}>
102+
Click
103+
</button>
104+
<!-- Svelte.js -->
105+
<button v-on:click="handleClick($event)">
106+
Click
107+
</button>
108+
```
109+
110+
<br>
111+
112+
### ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœํผํ‹ฐ
113+
> window ๊ฐ์ฒด, Document์™€ HTMLElement ํƒ€์ž…์˜ DOM Node ๊ฐ์ฒด๋Š” ์ด๋ฒคํŠธ์— ๋Œ€์‘ํ•˜๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ํ•จ์ˆ˜๋ฅผ ๋“ฑ๋กํ•˜๋ฉด ํ•ด๋‹น ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœํผํ‹ฐ์— ๋ฐ”์ธ๋”ฉ๋ฉ๋‹ˆ๋‹ค.
114+
115+
์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœํผํ‹ฐ ํ‚ค๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ on ์ ‘๋‘์‚ฌ์™€ ์ด๋ฒคํŠธ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ด๋ฒคํŠธ ํƒ€์ž…์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
116+
```html
117+
<!DOCTYPE html>
118+
<html lang="en">
119+
120+
<head>
121+
<meta charset="UTF-8">
122+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
123+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
124+
<title>Document</title>
125+
</head>
126+
127+
<body>
128+
<button>Click</button>
129+
<script>
130+
const $button = document.querySelector('button');
131+
$button.onclick = function () {
132+
console.log('button click');
133+
}
134+
</script>
135+
</body>
136+
137+
</html>
138+
```
139+
140+
์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ๊ฐ์ฒด์ธ ์ด๋ฒคํŠธ ํƒ€๊ฒŸ(Event Target)๊ณผ ์ด๋ฒคํŠธ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์ธ ์ด๋ฒคํŠธ ํƒ€์ž…(Event Type)์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ๊ฒฝ์šฐ ์ด๋ฒคํŠธ ํƒ€๊ฒŸ์€ **๋ฒ„ํŠผ ์š”์†Œ**, ์ด๋ฒคํŠธ ํƒ€์ž…์€ **'click'**, ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š” **์ต๋ช… ํ•จ์ˆ˜**์ž…๋‹ˆ๋‹ค.
141+
142+
๋Œ€๋ถ€๋ถ„ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ด๋ฒคํŠธ ํƒ€๊ฒŸ์— ๋ฐ”์ธ๋”ฉํ•˜์—ฌ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ•˜์ง€๋งŒ, ๋ฐ˜๋“œ์‹œ ๊ทธ๋Ÿฐ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š” `์ด๋ฒคํŠธ ํƒ€๊ฒŸ ๋˜๋Š” ์ „ํŒŒ๋œ ์ด๋ฒคํŠธ๋ฅผ ์บ์น˜ํ•  DOM ๋…ธ๋“œ ๊ฐ์ฒด์— ๋ฐ”์ธ๋”ฉ` ๋˜๊ธฐ ๋•Œ๋ฌธ์ด์ฃ .
143+
144+
์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋„ ๊ฒฐ๊ตญ DOM Node ๊ฐ์ฒด์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœํผํ‹ฐ๋กœ ๋ณ€ํ™˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” ๋™์ผํ•˜๊ฒŒ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ์‹์ด๋‚˜, ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ `HTML๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ถ„๋ฆฌ`์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ํฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋Š” ์ค‘์ฒฉ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœํผํ‹ฐ๋Š” ๋‹จ ํ•˜๋‚˜๋งŒ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์ฃ . ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด DOM ํ‘œ์ค€์— ์ถ”๊ฐ€๋œ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
145+
146+
<br>
147+
148+
### `addEventListener` ๋ฉ”์„œ๋“œ
149+
> DOM Level 2์— ๋„์ž…๋˜์—ˆ์œผ๋ฉฐ `EventTarget.prototype.addEventListener` ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
150+
151+
<br>
152+
153+
<div align='center'>
154+
155+
<img src='./img/event/addEventListener.jpg' width='900'/>
156+
157+
</div>
158+
159+
<br>
160+
161+
- ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ฌธ์ž์—ด์ธ ์ด๋ฒคํŠธ ํƒ€์ž…์„ ์ „๋‹ฌํ•˜๋Š”๋ฐ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœํผํ‹ฐ ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ฆฌ on ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
162+
- ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜์—๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
163+
- ์„ธ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ๋Š” ์ด๋ฒคํŠธ ์ „ํŒŒ ๋‹จ๊ณ„(์บก์ฒ˜๋ง ๋˜๋Š” ๋ฒ„๋ธ”๋ง)๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
164+
165+
```html
166+
<!DOCTYPE html>
167+
<html lang="en">
168+
169+
<head>
170+
<meta charset="UTF-8">
171+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
172+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
173+
<title>Document</title>
174+
</head>
175+
176+
<body>
177+
<button>Click</button>
178+
<script>
179+
const $button = document.querySelector('button');
180+
$button.addEventListener('click', function () {
181+
console.log('button click');
182+
});
183+
</script>
184+
</body>
185+
186+
</html>
187+
```
188+
- addEventListener ๋ฉ”์„œ๋“œ ๋ฐฉ์‹์€ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœํผํ‹ฐ์— ๋ฐ”์ธ๋”ฉ๋œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์— ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
189+
- ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœํผํ‹ฐ์— ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜์ง€ ์•Š๊ณ  ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ `์ธ์ˆ˜๋กœ ์ „๋‹ฌ`ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์ฃ .
190+
- addEventListener ๋ฉ”์„œ๋“œ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์ด๋ฒคํŠธ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š” ๋“ฑ๋ก๋œ ์ˆœ์„œ๋Œ€๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
191+
- ๋‹จ, ์ฐธ์กฐ๊ฐ€ ๋™์ผํ•œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ค‘๋ณต ๋“ฑ๋กํ•˜๋ฉด ํ•˜๋‚˜์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋งŒ ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.
192+
```html
193+
<script>
194+
const $button = document.querySelector('button');
195+
196+
const handleClick = function () {
197+
console.log('button click');
198+
}
199+
// ํ•˜๋‚˜๋งŒ ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.
200+
$button.addEventListener('click', handleClick);
201+
$button.addEventListener('click', handleClick);
202+
</script>
203+
```
204+
205+
<br>
105 KB
Loading

โ€ŽBrowser/index.htmlโ€Ž

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="UTF-8">
6+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
7+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
8+
<title>Document</title>
9+
</head>
10+
11+
<body>
12+
<button onclick="displayAlert('Hi!')">Click to Hi</button>
13+
<script>
14+
function displayAlert(greeting) {
15+
return alert(greeting);
16+
}
17+
</script>
18+
</body>
19+
20+
</html>

0 commit comments

Comments
ย (0)