์ค๋์ ์ฃผ์ ๋ ์น์ํ์ง๋ง ์ด๋ ค์ด ์ด๋ฒคํธ(event)์ ๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ์ด๋ฒคํธ๋ ์ฌ์ฉ์๊ฐ ํด๋ฆญ์ ํ์ '๋', ํค๋ณด๋๋ก ๋ฌด์ธ๊ฐ๋ฅผ ์ ๋ ฅํ์ '๋'์ ๊ฐ์ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์, ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ๋ฉด alert์ฐฝ์ด ๋จ๋ ๊ธฐ๋ฅ์ ๋ง๋ค๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด๋ด ์๋ค. ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด alert์ฐฝ์ ๋์ฐ๋ ํจ์๋ฅผ ๋ง๋ค์ด์ผ๊ฒ ์ฃ . ์ด์ฒ๋ผ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ํธ์ถ๋๋ ํจ์๋ฅผ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ผ๊ณ ํฉ๋๋ค.
๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฐ๋ฐ์๊ฐ ์ง์ ํจ์๋ฅผ ํธ์ถํ์ง ์๊ณ , ๋ธ๋ผ์ฐ์ ์๊ฒ ์๋ ค ํธ์ถ์ ์์ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ธ์ ์ด๋ ์๊ฐ์ ๋ฒํผ์ ํด๋ฆญํ ์ง ์ ์ ์์ผ๋ฏ๋ก, "์ธ์ ํจ์๋ฅผ ํธ์ถํด์ผ ํ ์ง"๋ ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋คํํ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ฉ์์ ํ์๋ฅผ ์ฆ๊ฐ ๊ฐ์งํ์ฌ ํน์ ํจ์(์ด๋ฒคํธ ํธ๋ค๋ฌ)๋ฅผ ํธ์ถํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ 24์๊ฐ ๋๊ธฐํ๋ฉฐ ์ฌ์ฉ์์ ํ๋์ ๊ธฐ๋ค๋ฆฌ์ง ์์๋ ๋ฉ๋๋ค.
์ ๋ฆฌํ์๋ฉด ๊ฐ๋ฐ์๊ฐ ์ด๋ค ์ผ์ด ๋ฐ์ํ์ ๋ ์คํ๋์ด์ผ ํ ์ฝ๋๋ฅผ ๋ฑ๋กํ๋ฉด, ๋ธ๋ผ์ฐ์ ๋ ๊ทธ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ๋ฑ๋ก๋ ์ฝ๋๋ฅผ ์คํํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
์์์ ๋งํ๋ฏ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ๋์ํ๋ ์ฝ๋๋ฅผ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ผ๊ณ ํฉ๋๋ค. ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ๋ธ๋ผ์ฐ์ ์๊ฒ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ํธ์ถ์ ์์ํ๋ ๊ฒ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฑ๋ก์ด๋ผ๊ณ ํฉ๋๋ค. ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ 3๊ฐ์ง์ ๋๋ค.
ํ๋์ฉ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ธ๋ผ์ธ ๋ฐฉ์์ ์ด๋ฒคํธ๋ฅผ ์ด๋ฒคํธ ๋์์ ํ๊ทธ ์์ฑ์ผ๋ก ์ง์ ํ๋ ๊ฒ์ ๋๋ค. HTML ์์์ ์ดํธ๋ฆฌ๋ทฐํธ ์ค์๋ ์ด๋ฒคํธ์ ๋์ํ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ดํธ๋ฆฌ๋ทฐํธ๊ฐ ์์ต๋๋ค. ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ดํธ๋ฆฌ๋ทฐํธ์ ์ด๋ฆ์ onclick์ฒ๋ผ on์ ๋์ฌ์ ์ด๋ฒคํธ์ ์ข ๋ฅ๋ฅผ ๋ํ๋ด๋ ์ด๋ฒคํธ ํ์ ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ์๋ ์์์ฝ๋์ฒ๋ผ์.
<button onclick="sayHi('perfume')">Click</button>
์ด ๋ฐฉ์์ ์ ๋ณด์ธ HTML๊ณผ ์ ์ด์ธ JavaScript๊ฐ ํผ์ฌ๋ ํํ์ด๊ธฐ ๋๋ฌธ์ ๊ถ์ฅํ๋ ๋ฐฉ์์ ์๋๋๋ค. ํ์ง๋ง React ๊ฐ์ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ/๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ์ดํธ๋ฆฌ๋ทฐํธ ๋ฐฉ์์ผ๋ก ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. HTML,CSS,์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐ๋ณ์ ์ธ ์์๊ฐ ์๋ ๋ทฐ๋ฅผ ๊ตฌ์ฑํ๋ ๊ตฌ์ฑ ์์ ๊ทธ๋ฃน์ผ๋ก ๊ฐ์ฃผํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ๋กํผํฐ ๋ฐฉ์์ ์ด๋ฒคํธ ๋์์ ํด๋นํ๋ ๊ฐ์ฒด์ ํ๋กํผํฐ๋ก ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํ๋ ๋ฐฉ์์ ๋งํฉ๋๋ค. ์ด๋ฒคํธ ํธ๋ค๋ฌ ํ๋กํผํฐ์ ํจ์๋ฅผ ๋ฐ์ธ๋ฉํ๋ฉด ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ๋ฑ๋ก๋ฉ๋๋ค.
<html>
<button> Click Here! </button>
<script>
const $button = document.querySelector('button');
$button.onClick = function () {
alert('Hi, there')
};
</script>
</html>
์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ๊ธฐ ์ํด์๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํฌ ๊ฐ์ฒด์ธ ์ด๋ฒคํธ ํ๊น๊ณผ ์ด๋ฒคํธ์ ์ข ๋ฅ๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด์ธ ์ด๋ฒคํธ ํ์ , ๊ทธ๋ฆฌ๊ณ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ง์ ํ ํ์๊ฐ ์์ต๋๋ค.
์์๋ก ์ ์ฝ๋๋ฅผ ์ดํด๋ณด์๋ฉด, $button์ด ์ด๋ฒคํธ ํ๊น, onClick ๋ถ๋ถ์ด ์ด๋ฒคํธ ํ์ , funtion()์ด ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ๋๋ค.
์ด์ ๊ฐ์ ํ๋กํผํฐ ๋ฐฉ์์ HTML๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ค์์ด๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ง๋ง, ์ด๋ฒคํธ ํธ๋ค๋ฌ ํ๋กํผํฐ์ ํ๋์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ง ๋ฐ์ธ๋ฉํ ์ ์๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
addEventListener() ๋ฐฉ์์ ๋ง๊ทธ๋๋ก addEventListener() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ๋ ๋ฐฉ์์ ๋๋ค. ์ด ๋ฐฉ์์ ์ค์ํ ์ฅ์ ์ ํ๋์ ์ด๋ฒคํธ ๋์์ ๋ณต์์ ๋์ผ ์ด๋ฒคํธ ํ์ ๋ฆฌ์ค๋๋ฅผ ๋ฑ๋กํ ์ ์๋ค๋ ์ ์ ๋๋ค.
addEventListener ๋ฉ์๋์ ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์๋ ์ด๋ฒคํธ์ ์ข ๋ฅ๋ฅผ ๋ํ๋ด๋ ์ด๋ฒคํธ ํ์ ์ ์ ๋ฌํ๋๋ฐ, ์์์ ์ดํด๋ณธ ๋ ๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ on ์ ๋์ฌ๋ฅผ ๋ถ์ด์ง ์์ต๋๋ค. ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ ๋ฌํ๊ณ , ๋ง์ง๋ง ๋งค๊ฐ๋ณ์์์๋ ์ด๋ฒคํธ๋ฅผ ์บ์นํ ์ด๋ฒคํธ ์ ํ ๋จ๊ณ(์บก์ฒ๋ง ๋๋ ๋ฒ๋ธ๋ง)๋ฅผ ์ง์ ํฉ๋๋ค. ์ด๋ฒคํธ ์ ํ์ ๊ดํด์๋ ์๋์์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฒคํธ์ ๊ด๋ จ๋ ๋ค์ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ์ด๋ฒคํธ ๊ฐ์ฒด๊ฐ ๋์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค. ์์ฑ๋ ์ด๋ฒคํธ ๊ฐ์ฒด๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌ๋ฉ๋๋ค.
์ ๊ทธ๋ฆผ์ Event, UIEvent,MouseEvent ๋ฑ ๋ชจ๋๊ฐ ์์ฑ์ ํจ์์ ๋๋ค. ๋ฐ๋ผ์ ์์ฑ์ ํจ์๋ฅผ ํธ์ถํด์ ์ด๋ฒคํธ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๋ํ ์์ฑ๋ ์ด๋ฒคํธ ๊ฐ์ฒด๋ ์์ฑ์ ํจ์์ ๋๋ถ์ด ์์ฑ๋๋ ํ๋กํ ํ์ ์ผ๋ก ๊ตฌ์ฑ๋ ํ๋กํ ํ์ ์ฒด์ธ์ ์ผ์์ด ๋ฉ๋๋ค.
HTML ํ๊ทธ๋ ์ค์ฒฉ๋์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ํน์ ํ ํ๊ทธ์์ ๋ฐ์ํ๋ ์ด๋ฒคํธ๋ ์ค์ฒฉ๋์ด ์๋ ํ๊ทธ๋ค ๋ชจ๋๊ฐ ๋์์ด ๋ ์ ์์ฃ . ์ด๋ฐ ๊ฒฝ์ฐ ์ค์ฒฉ๋ ํ๊ทธ๋ค์ ์ด๋ฒคํธ๊ฐ ๋ฑ๋ก ๋์ด ์๋ค๋ฉด ์ด๋ป๊ฒ ์ฒ๋ฆฌ ๋ ๊น์? ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ DOM ์์์ธ ์ด๋ฒคํธ ํ๊น์ ์ค์ฌ์ผ๋ก ๊ทธ ์์์ ๋ถ๋ชจ ๋๋ ์์ ์์๊น์ง ์ด๋ฒคํธ๊ฐ ์ ํ๋ฉ๋๋ค.์ด์ฒ๋ผ ์ด๋ฒคํธ๊ฐ DOM ํธ๋ฆฌ๋ฅผ ํตํด ์ ํ๋๋ ๊ฒ์ ์ด๋ฒคํธ ์ ํ๋ผ๊ณ ํฉ๋๋ค. ์ด๋ ์ ํ๋๋ ๋ฐฉํฅ์ ๋ฐ๋ผ ๋ฒ๋ธ๋ง(bubbling), ์บก์ณ๋ง(capturing)์ด๋ผ๊ณ ๊ตฌ๋ถ์ง์ด ๋ถ๋ฆ ๋๋ค.
์ด๋ฒคํธ ์์์ ์ฌ๋ฌ ๊ฐ์ ํ์ DOM ์์์ ๊ฐ๊ฐ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ๋ ๋์ ํ๋์ ์์ DOM ์์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ๋ ๊ฒ์ ๋งํฉ๋๋ค. ์ด๋ฒคํธ ์์์ ํตํด ์์ DOM ์์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ๋ฉด ์ฌ๋ฌ ๊ฐ์ ํ์ DOM ์์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ ํ์๊ฐ ์์ต๋๋ค.
์น๋ธ๋ผ์ฐ์ ์ ๊ตฌ์ฑ์์๋ค์ ๊ฐ๊ฐ ๊ธฐ๋ณธ์ ์ธ ๋์ ๋ฐฉ๋ฒ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ํ ์คํธ ํ๋์ ํฌ์ปค์ค๋ฅผ ์ค ์ํ์์ ํค๋ณด๋๋ฅผ ์ ๋ ฅํ๋ฉด ํ ์คํธ๊ฐ ์ ๋ ฅ๋๋ค.
- ํผ์์ submit ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๋ค.
- a ํ๊ทธ๋ฅผ ํด๋ฆญํ๋ฉด href ์์ฑ์ URL๋ก ์ด๋ํ๋ค.
์ด๋ฌํ ๊ธฐ๋ณธ์ ์ธ ๋์๋ค์ ๊ธฐ๋ณธ ์ด๋ฒคํธ๋ผ๊ณ ํ๋๋ฐ, ์ด๋ฒคํธ ๊ฐ์ฒด์ preventDefault ๋ฉ์๋๋ ์ด๋ฌํ DOM ์์์ ๊ธฐ๋ณธ ๋์์ ์ค๋จ์ํฌ ์ ์์ต๋๋ค. ๋ํ stopPropagation ๋ฉ์๋๋ฅผ ํตํด ์ด๋ฒคํธ ์ ํ๋ฅผ ์ค์ง์ํฌ ์๋ ์์ต๋๋ค.
๋ฅ๋ค์ด๋ธ ์๋ฐ์คํฌ๋ฆฝํธ
์ํ์ฝ๋ฉ Event