[๐ŸŒณjavascript] ์ด๋ฒคํŠธ

h-a-n-aยท2023๋…„ 3์›” 22์ผ
1

๐ŸŒณjavascript

๋ชฉ๋ก ๋ณด๊ธฐ
16/17

์ด๋ฒคํŠธ

๋ชจ๋“  DOM ๋…ธ๋“œ๋Š” click, focus, keydown ๋“ฑ ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์— ๋”ฐ๋ผ event๋ผ๋Š” ์‹ ํ˜ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋Ÿฌํ•œ ์ด๋ฒคํŠธ ๋ฐœ์ƒ์— ๋”ฐ๋ผ ์‹คํ–‰๋  ํ•จ์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํ• ๋‹นํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

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

๋ธŒ๋ผ์šฐ์ €์—์„œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ƒ์„ฑ๋˜๋Š”, ์ด๋ฒคํŠธ ์ƒ์„ธ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋‹ค์–‘ํ•œ ์ƒ์„ธ ์ •๋ณด๋“ค ์ค‘, ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ •๋ณด๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • target: ์ด๋ฒคํŠธ๊ฐ€ ์ฒ˜์Œ ๋ฐœ์ƒํ•œ ๋Œ€์ƒ
  • currentTarget: ํ˜„์žฌ ์ด๋ฒคํŠธ๊ฐ€ ์œ„์น˜ํ•˜๊ณ  ์žˆ๋Š” ๋Œ€์ƒ
  • clientX: ๋ธŒ๋ผ์šฐ์ € ์ƒ์—์„œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์ขŒํ‘œ
  • clientY: ๋ธŒ๋ผ์šฐ์ € ์ƒ์—์„œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์ขŒํ‘œ
  • type: ์ด๋ฒคํŠธ์˜ ํƒ€์ž…

++ ๋ฆฌ์•กํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ € ์ž์ฒด์˜ native event๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ธŒ๋ผ์šฐ์ € ๊ฐ„์˜ ํ˜ธํ™˜์„ ์œ„ํ•ด ํ•ด๋‹น event๋ฅผ ๊ฐ์‹ผ synthetic event๋ฅผ ํ™œ์šฉํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒคํŠธ ๊ฐ์ฒด์˜ ์ด๋ฆ„ ๋˜ํ•œ SyntheticBaseEvent๋ผ๊ณ  ๋‚˜์˜ค๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง

ํ•˜๋‚˜์˜ ์š”์†Œ์— ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ํ•ด๋‹น ์š”์†Œ์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์ž‘๋™ํ•˜๊ณ , ์ด์–ด์„œ ๊ทธ ๋ถ€๋ชจ์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์ž‘๋™ํ•˜์—ฌ, ์ตœ์ƒ๋‹จ์˜ ์š”์†Œ๊นŒ์ง€ ๊ฐ ์š”์†Œ์— ํ• ๋‹น๋œ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ํ˜„์ƒ.
์ด๋ฒคํŠธ ๊ฐ์ฒด์—์„œ e.target VS e.currentTarget์˜ ์ฐจ์ด
target์€ ์ด๋ฒคํŠธ๊ฐ€ ์ฒ˜์Œ ๋ฐœ์ƒํ•œ ๋Œ€์ƒ, currentTarget์€ ํ˜„์žฌ ์ด๋ฒคํŠธ๊ฐ€ ์œ„์น˜ํ•˜๊ณ  ์žˆ๋Š” ๋Œ€์ƒ, ์ฆ‰ ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง์œผ๋กœ ์ธํ•ด ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋Š” ํ˜„์žฌ์˜ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.(์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์ค‘์ฒฉ๋˜์—ˆ์„ ๋•Œ๋งŒ ์กด์žฌํ•จ)

๋งŒ์•ฝ ์ค‘๋‹จํ•˜๊ณ  ์‹ถ์œผ๋ฉด, e.stopPropagation์„ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์ด๋ฒคํŠธ ์œ„์ž„

๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์—ฌ๋Ÿฌ ์š”์†Œ์˜ ์ด๋ฒคํŠธ๋ฅผ ๋‹ค๋ค„์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 1๋ฒˆ ๋ฒ„ํŠผ, 2๋ฒˆ ๋ฒ„ํŠผ, 3๋ฒˆ ๋ฒ„ํŠผ ๋ชจ๋‘ ๊ฐ™์€ ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๊ฐ ๋ฒ„ํŠผ๋งˆ๋‹ค ์ด๋ฒคํŠธ๋ฅผ ๋‹ฌ์•„์ค„ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ด ์š”์†Œ๋“ค์˜ ๊ณตํ†ต ๋ถ€๋ชจ์ธ ์š”์†Œ ํ•œ ๊ฐœ์— ์ด๋ฒคํŠธ๋ฅผ ์„ค์ •ํ•ด๋†“์œผ๋ฉด ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•˜๊ณ  ํšจ์œจ์ ์ธ ์ฝ”๋“œ๊ฐ€ ๋œ๋‹ค.

++ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ๋•Œ, ์ธ์ž๋ฅผ ์ „๋‹ฌํ•˜๋ฉด์„œ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•ด์„œ ๋ช…์‹œํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.(ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ •์˜ํ•˜๋Š” ๊ฒƒ!!)

profile
ํ•˜๋ฃจํ•˜๋ฃจ๊ฐ€ ์—ฐ์Šต์ด๋‹ˆ ๋‚ด์ผ์€ ๋” ๊ฐ•ํ•ด์งˆ ๊ฒ๋‹ˆ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€