JavaScript Event - swkim0128/PARA GitHub Wiki
์น ํ์ด์ง์์ ์ฌ๋ฌ ์ข ๋ฅ์ ์ํธ์์ฉ์ด ์์ ๋ ๋ง๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์.
์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค๋ฅผ ํด๋ฆญ ํ์์ ๋, ํค๋ณด๋๋ฅผ ๋๋ ์ ๋ ๋ฑ๊ณผ ๊ฐ์ด ๋ค์ํ ์ข ๋ฅ์ ์ด๋ฒคํธ๊ฐ ์กด์ฌ.
JavaScript๋ฅผ ์ฌ์ฉํ์ฌ DOM์์ ๋ฐ์ํ๋ ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ์ฌ ์ด๋ฒคํธ์ ๋์ํ๋ ์ฌ๋ฌ ์์ ์ํ.
์ด๋ฒคํธ๋ ์ผ๋ฐ์ ์ผ๋ก ํจ์์ ์ฐ๊ฒฐ์ด ๋๊ณ , ์ด ํจ์๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์๋๊ธฐ ์ ์๋ ์คํ๋์ง ์๋ค๊ฐ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์คํ. >> ==์ด๋ฒคํธ ํธ๋ค๋ฌ (Handler)==๋๋ ==์ด๋ฒคํธ ๋ฆฌ์ค๋(Lisstener)==๋ผ ํ๋ฉฐ ์ด ํจ์์ ์ด๋ฒคํธ ๋ฐ์์ ์คํํด์ผ ํ๋ ์ฝ๋ ์์ฑ.
๋ง์ฐ์ค ์ด๋ฒคํธ
์น ์ด๊ธฐ์๋ load, click ๋ฑ ์์์ ์ด๋ฒคํธ๋ง ์ฌ์ฉ.
๋ง์ฐ์ค ์ด๋ฒคํธ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ์ฅ ๋งํ ์ฌ์ฉํ๋ ์ด๋ฒคํธ.
๋ง์ฐ์ค ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ์ ๋ฌ๋๋ ์ด๋ฒคํธ ๊ฐ์ฒด์๋ ๋ง์ฐ์ค ์์น์ ๋ฒํผ ์ํ ๋ฑ์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค.
ํค๋ณด๋ ์ด๋ฒคํธ
ํค๋ณด๋์ ์ปค์๊ฐ ์น ๋ธ๋ผ์ฐ์ ์ ๋ํ๋๋ ์ง๋ฒ์์ ํค๋ณด๋๋ฅผ ์กฐ์ํ ๋ ์ด๋ฒคํธ ๋ฐ์.
ํค๋ณด๋ ์กฐ์์ ์ด์์ฒด์ ์ ์ํฅ์ ๋ฐ์ผ๋ฏ๋ก ํน์ ํค๊ฐ ์ด๋ฒคํธ ํธ๋ค๋ฌ์๊ฒ ์ ๋ฌ๋์ง ์์ ์ ์๋ค.
ํค๋ณด๋ ์ปค์๊ฐ ๋ํ๋ด๋ ์์๊ฐ ์๋ค๋ฉด document์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์.
Frame(UI) ์ด๋ฒคํธ
Frame ๊ด๋ จ ์ด๋ฒคํธ๋ ํน์ DOM ๋ฌธ์์ ๊ด๋ จ๋ ์ด๋ฒคํธ๊ฐ ์๋๋ผ Frame ์์ฒด์ ๋ํ ์ด๋ฒคํธ.
Frame ์ด๋ฒคํธ ์ค์์๋ load ์ด๋ฒคํธ๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ.
load๋ ๋ฌธ์ ๋ฐ ์์๋ค์ด ๋ชจ๋ ์น ๋ธ๋ผ์ฐ์ ์ ํ์ฌ๋๋ฉด ์ด๋ฒคํธ๋ฅผ ์ํ.
unload๋ ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ ๋ ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ง๋ง, ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ ๋๋ ๊ฒ์ ๋ง์ ์๋ ์๋ค.
ํผ(Form) ์ด๋ฒคํธ
Form ๊ด๋ จ ์ด๋ฒคํธ๋ ์น ์ด๊ธฐ๋ถํฐ ์ง์๋์ด ์ฌ๋ฌ ์น ๋ธ๋ผ์ฐ์ ์์ ๊ฐ์ฅ ์์ ์ ์ผ๋ก ๋์ํ๋ ์ด๋ฒคํธ.
์์ฃผ ์ฌ์ฉ๋๋ ์ด๋ฒคํธ๋ก form์ด ์ ์ก๋ ๋์๋ submit ์ด๋ฒคํธ๊ฐ ๋ฐ์.
Form์ ์ด๊ธฐํํ ๋๋ reset ์ด๋ฒคํธ๊ฐ ๋ฐ์.
submit๊ณผ reset์ ์ด๋ฒคํธ ํธ๋ค๋ฌ์์ ์ทจ์ํ ์ ์๋ค.
์ธ๋ผ์ธ ์ด๋ฒคํธ ํธ๋ค๋ฌ
์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ๊ณ ๋์ํ๋ ์์ ์ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง ์ ๊ณต.
์ด๋ค ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ์์ ์ ๋ฑ๋กํ๋ ๊ฒ์ '์ด๋ฒคํธ ํธ๋ค๋ฌ(ํน์ ๋ฆฌ์ค๋)๋ฅผ ๋ฑ๋กํ๋ค.' ๋ผ๊ณ ํํ
JavaScript์ ์ด๊ธฐ์๋ HTML ์์์ ๋ด๋ถ์์ ์ง์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋ก.
์ด๋ฌํ ๋ฐฉ์์ HTML ์ฝ๋๋ฅผ JavaScript ์ฝ๋๊ฐ ์นจ์ ํ๋ค๋ ๋ฌธ์ ๊ฐ ์์.
์ด ๋ฐฉ์์ ๊ฒฝ์ฐ ์ต๊ทผ์๋ ์ฌ์ฉํ์ง ์์. ๋จ, ๊ธฐ์กด์ ์ฝ๋์์ ์ฌ์ฉ์ด ๋์๊ธฐ์ ์์ ๋์ด์ผ ํจ.
์ฌ๋ฌ ๊ฐ์ ํจ์๋ฅผ ํ๋ฒ์ ํธ์ถ ๊ฐ๋ฅ.
์ต๊ทผ ๊ด์ฌ ๋ฐ๊ณ ์๋ CBD(Component Based Development) ๋ฐฉ์์ Angular / React / Vue.js์ ๊ฐ์ framewrok / libary์์๋ ์ธ๋ผ์ธ ๋ฐฉ์์ผ๋ก ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌ (CBD์์๋ html, css, js๋ฅผ view์ ๊ตฌ์ฑ ์์๋ก๋ง์ผ๋ก ๋ณด๊ธฐ ๋๋ฌธ.)
์ด๋ฒคํธ ํธ๋ค๋ฌ ํ๋กํผํฐ ๋ฐฉ์
HTML์ ์ง์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ ๋์ ์ JavaScript์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
JavaScript์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํจ์ผ๋ก์จ HTML์ฝ๋์ JavaScriptํฌ๋๋ฅผ ๋ถ๋ฆฌํ ์ ์๋ค.
์ด๋ฒคํธ ๋์์ด ๋๋ ํน์ DOM์ ์ ํํ๊ณ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋ก.
'div1' ์์(element)์ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ํธ๋ค๋ฌ๋ก ๋ฑ๋กํ ํจ์๊ฐ ์คํ.
์ธ๋ผ์ธ ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฐฉ์์ฒ๋ผ HTML๊ณผ JavaScript๊ฐ ํผ์ฉ๋์ด ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ ์ ์๋ ๋ฐฉ์.
๋จ, ์ด๋ฒคํธ ํธ๋ค๋ฌ ํ๋กํผํฐ์ ํ๋์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ง์ ๋ฐ์ธ๋ฉ ํ ์ ์๋ค๋ ๋จ์ ์ ๊ฐ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์๋์ ์์์ ์ฒซ๋ฒ์งธ ๋ฐ์ธ๋ฉ๋ alert()์ ์คํ๋์ง ์๋๋ค.
addEventListener ๋ฉ์๋ ๋ฐฉ์
2000๋ ์ ๋ฐํ๋ DOM ๋ ๋ฒจ2 ์ด๋ฒคํธ ๋ช ์ธ์ addEventListener(arg1, arg2[, arg3])๋ฅผ ์ด์ฉํ์ฌ ์ข ๋ ์ธ๋ฐํ ์ด๋ฒคํธ ์ ์ด๊ฐ ๊ฐ๋ฅ.
์ ๋ฌ ์ธ์์ ์ฒซ ๋ฒ์งธ์๋ ์ด๋ฒคํธ ์ด๋ฆ, ๋ ๋ฒ์งธ์๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ, ์ธ ๋ฒ์งธ์๋ ์บก์ณ๋ง ์ฌ๋ถ๋ฅผ ์ฌ์ฉ.
์ฒซ ๋ฒ์งธ ์ ๋ฌ์ธ์์ ์ด๋ฒคํธ ์ด๋ฆ์๋ 'on'์ ์ ๊ฑฐํ ์ด๋ฒคํธ ์ด๋ฆ์ ์ฌ์ฉ.
[์ฃผ์!!] ์ด ๋ฐฉ์์ Internet Expolorer 9 ์ด์ ๋ฒ์ ์์๋ ์ฌ์ฉ ๋ถ๊ฐ. >> attachEvent() ์ฌ์ฉ.
addEventListener ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ๋์ DOM ์์์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ธ๋ฉํ๊ณ ํด๋น ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์คํ๋ ์ฝ๋ฐฑ ํจ์(์ด๋ฒคํธ ํธ๋ค๋ฌ)๋ฅผ ์ง์ ํ๋ค.
์ฅ์
- ํ๋์ ์ด๋ฒคํธ์ ๋ํด ํ๋ ์ด์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
- ์บก์ฒ๋ง๊ณผ ๋ฒ๋ธ๋ง์ ์ง์.
- HTML ์์ ๋ฟ๋ง ์๋๋ผ ๋ชจ๋ DOM(HTML, XML, SVG)์ ๋ํด ๋์.
์๋์ ์์ ์ ๊ฒฝ์ฐ ์์์ ๊ฐ๊ฒ์ฌ๋ฅผ ์ฌ๋ฌ ๊ฐ ํด์ผ ํ ๊ฒฝ์ฐ(๊ณตํต ๋ก์ง) ๊ท์น์ด ๋ฐ๋๊ฒ ๋๋ฉด ์ฐธ์กฐํ๊ณ ์๋ ๋ชจ๋ ๊ณณ์ ์์ค๋ฅผ ๋ฐ๊ฟ์ผ ํ๋ค. >> ํด๊ฒฐ : ๊ท์น์ ํด๋นํ๋ ๊ฐ์ ์ธ์๋ก ๋ฐ๋ ํจ์๋ฅผ ์ธ๋ถ๋ก ๋นผ๋ฉด ๋ ๊น?
๊ณตํต ๊ท์น์ ํด๋นํ๋ ๊ฐ์ ์์๋ก ๋ง๋ค๊ณ checkVal(์ธ์)์ ํจ์๋ฅผ ์ ์ธํ ๋ค callback ํจ์ ํธ์ถ.
๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ ํจ์๋ฅผ ์ง์ ํธ์ถํ ๊ฒฝ์ฐ ์ด๋ฒคํธ ๋ฐ์ ์๊น์ง ๋๊ธฐํ์ง ์๊ณ ๋ฐ๋ก ์คํ.
ํด๊ฒฐํ๊ธฐ ์ํด ํจ์ ํธ์ถ์ด ์๋ ํจ์ ์ง์ ์ ์ ํ
ํด๊ฒฐ์ ๋์ง๋ง ์ธ์๋ฅผ ์ ๋ฌ ํ ์ ์๋ค.
์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ด๋ถ์์ ํจ์๋ฅผ ํธ์ถํ๋ ๋ฐฉ์์ผ๋ก ์ธ์ ์ ๋ฌ ํด๊ฒฐ.
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์๋ฅผ ํฌํจํ๋ ๋ถ๋ชจ HTML๋ก๋ถํฐ ์ด๋ฒคํธ ๊ทผ์์ง์ธ ์์์์๊น์ง ๊ฒ์ฌํ๋ ๊ฒ์ ์บก์ณ๋ง์ด๋ผ ํ๋ค.
- ์ด๋ฒคํธ ์บก์ณ๋ง์์ ์บก์ณ์์ฑ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ๋ฑ๋ก๋์ด ์์ผ๋ฉด ์ํ.
์ด๋ฒคํธ ๋ฐ์ ์์๋ถํฐ ์์๋ฅผ ํฌํจํ๋ ๋ถ๋ชจ์์๊น์ง ์ฌ๋ผ๊ฐ๋ฉด์ ์ด๋ฒคํธ๋ฅผ ๊ฒ์ฌํ๋ ๊ฒ์ ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ด๋ผ ํ๋ค.
- ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์์ ๋ฒ๋ธ ์์ฑ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ๋ฑ๋ก๋์ด ์์ผ๋ฉด ์ํ.
ํจ์์ ์ธ๋ฒ์งธ ์ธ์ ๊ฐ์ด true๋ฉด ์บก์ณ๋ง, false๋ฉด ๋ฒ๋ธ๋ง
div3์ ํด๋ฆญํ์ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ.
- true(์บก์ณ๋ง) : div1 > div2 > div3
- false(๋ฒ๋ธ๋ง) : div3 > div2 > div1
ํ๋์ DOM ์๋ฆฌ๋จผํธ์ ๋ณต์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ ์ ์๋ค.
๋ง์ค๊ฐ ํน์ DOM ์๋ฆฌ๋จผํธ ์์ญ ์์ผ๋ก ๋ค์ด์จ ๊ฒฝ์ฐ mouseover ์ด๋ฒคํธ๊ฐ ๋ฐ์.
๋ฐ๋๋ก ๋ง์ฐ์ค๊ฐ ํน์ DOM ์๋ฆฌ๋จผํธ ์์ญ ๋ฐ์ผ๋ก ๋๊ฐ ๊ฒฝ์ฐ mouseout ์ด๋ฒคํธ๊ฐ ๋ฐ์.
ํ๊ทธ์ mouseover, mouseout 2๊ฐ์ง ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋ก.