Browser Event, Event object, Event handler - accidentlywoo/legacyVue GitHub Wiki

Browser Event, Event object, Event handler

  • ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ์–ด๋–ค ์˜์—ญ์„ ๋งˆ์šฐ์Šค ํด๋ฆญํ•˜๊ฑฐ๋‚˜, ํ™”๋ฉด์„ ์Šคํฌ๋กค ํ•˜๊ฑฐ๋‚˜ ํ•˜๋Š” ์ž‘์—…์— ๋”ฐ๋ผ์„œ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฐ˜์‘ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒƒ๋“ค์€ ๋ชจ๋‘ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ Event๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘๋˜๊ฒŒ ๋งŒ๋“ค์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ Event๋ฅผ ์•Œ์•„๋ณด๋ฉด์„œ ์›นํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์„ ์ดํ•ดํ•ด๋ด…์‹œ๋‹ค.

ํ•™์Šต ๋ชฉํ‘œ

  1. Event listener ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.
  2. Event๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๊ฐœ๋…

  • Event listener
  • addEventListener
  • event object

ํ•™์Šตํ•˜๊ธฐ

Event

๋ธŒ๋ผ์šฐ์ €์—๋Š” ๋งŽ์€ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์˜ ํฌ๊ธฐ๋ฅผ ๋งˆ์šฐ์Šค๋กœ ์กฐ์ ˆํ•  ๋•Œ๋„, ์Šคํฌ๋กค์„ ํ•  ๋•Œ๋„, ๋งˆ์šฐ์Šค๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ๋ฌด์–ธ๊ฐ€๋ฅผ ์„ ํƒํ•  ๋•Œ๋„ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.์ด๋ฒคํŠธ๋ฅผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฐœ์ƒ์‹œ์ผœ์ฃผ๋‹ˆ, ์šฐ๋ฆฌ๋Š” ๊ทธ๋•Œ ์–ด๋–ค ์ผ์„ ํ•˜๋ผ๊ณ  ํ•  ์ผ์„ ๋“ฑ๋กํ•  ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, HTML ์—˜๋ฆฌ๋จผํŠธ๋ณ„๋กœ ์–ด๋–ค ์ด๋ฒคํŠธ(์ฃผ๋กœ ํ‚ค๋ณด๋“œ๋‚˜ ๋งˆ์šฐ์Šค ๊ด€๋ จ)๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํŠน์ • ํ–‰์œ„๋ฅผ(์–ด๋–ค ์ผ) ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ๋Œ€์ƒ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ฐพ๊ณ  ์–ด๋–ค ์ผ์„ ๋“ฑ๋กํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๊ฒƒ์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ๋“ฑ๋ก

์ด๋ฒคํŠธ ๋“ฑ๋ก ํ‘œ์ค€๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. addEventListenerํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. var el = document.querySelector(".outside"); el.addEventListener("click", function(){ //do something.. }, false); addEventListener ํ•จ์ˆ˜์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ž๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ๋‚˜์ค‘์— ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜๋กœ ์ด๋ฒคํŠธํ•ธ๋“ค๋Ÿฌ(Event Handler)๋˜๋Š” ์ด๋ฒคํŠธ๋ฆฌ์Šค๋„ˆ(Event Listener)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ฝœ๋ฐฑํ•จ์ˆ˜๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ๊ฐ์ฒด

๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ, ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์–ด๋–ค ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด์€ ์ด๋ฒคํŠธ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฆฌ์Šค๋„ˆ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.๋”ฐ๋ผ์„œ ์ด๋ฒคํŠธ๋ฆฌ์Šค๋„ˆ ์•ˆ์—๋Š” ์ด๋ฒคํŠธ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•ด์„œ ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. var el = document.getElementById("outside"); el.addEventListener("click", function(evt){ console.log(evt.target); console.log(evt.target.nodeName); }, false); ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ๊ฑด event.target์ž…๋‹ˆ๋‹ค. event.target์€ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ element๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. element๋„ ๊ฐ์ฒด์ด๋ฏ€๋กœ ์•ˆ์— nodeName์ด๋‚˜ classname๊ณผ ๊ฐ™์ด element๊ฐ€ ๊ฐ€์ง„ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ๊ฐํ•ด๋ณด๊ธฐ

event type์—๋Š” ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ๋‚˜์š”? ๋งˆ์šฐ์Šค, ํ‚ค๋ณด๋“œ ๊ด€๋ จ ํƒ€์ž… ๋“ค์„ ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.