40์ฅ: ์ด๋ฒคํธ
- ์ด๋ฒคํธ ํธ๋ค๋ฌ -> ์ด๋ฒคํธ ๋ฐ์์ ํธ์ถ๋๋ ํจ์
- ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฑ๋ก -> ๋ธ๋ผ์ฐ์ ์๊ฒ ์ด๋ฒคํธ ํธ๋ค๋ฌ ํธ์ถ์ ์์
์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฑ๋ก ๋ฐฉ์
- ์ดํธ๋ฆฌ๋ทฐํธ ๋ฐฉ์
- on ์ ๋์ฌ๋ก ์์ํ๋ ์ด๋ฒคํธ ํ์
์ ํจ์๋ฅผ ์ฐธ์กฐ!
- ํจ์ ์ ์ธ์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ์ด ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ก ๋ฑ๋ก๋๋ฏ๋ก ์ฃผ์
- ์ด๋ฒคํธ ๊ฐ์ฒด ์ ๋ฌ ๋ฐ์์ ์ฒซ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ ๋ฐ๋์ event์ฌ์ ํ๋ค. e(X)
- ํ๋กํผํฐ ๋ฐฉ์
- DOM ๋
ธ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ ํ๋กํผํฐ๋ก ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฑ๋ก
- ์ด๋ฒคํธ ํ๊น, ์ด๋ฒคํธ ํ์
, ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ง์
$button.onclick = () => console.log('button click')
- addEventListener ๋ฐฉ์
- ๋ฉ์๋๋ฅผ ํตํด ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฑ๋ก
- ์ด๋ฒคํธ ํ๊น.(์ด๋ฒคํธํ์
, ์ด๋ฒคํธํธ๋ค๋ฌ, capture ์ฌ์ฉ์ฌ๋ถ)
์ด๋ฒคํธ ๊ฐ์ฒด
-
์ด๋ฒคํธ ๊ฐ์ฒด๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ์ฒซ๋ฒ์งธ ์ธ์๋ก ์๋ฌต์ ์ผ๋ก ์ ๋ฌ๋จ
-
์ด๋ฒคํธ ๊ฐ์ฒด๋ ์์ฑ์ ํจ์๋ก ์์๋ก ๋ง๋ค์๋ ์์!
-
์ด๋ฒคํธ ๊ฐ์ฒด๋ ๊ณตํต์ ํ๋กํผํฐ
- type, target, isTrusted, timeStamp ๋ฑ
๋ง์ฐ์ค ์ ๋ณด ์ทจ๋
- clientX/clientY๋ ๋ทฐํฌํธ ์นํ์ด์ง์ ๊ฐ์ ์์ญ์ ๊ธฐ์ค์ผ๋ก ๋ง์ฐ์ค ํฌ์ธํฐ ์ขํ๋ฅผ ๋ํ๋
์ด๋ฒคํธ ์ ํ
-
DOM ์์ ๋
ธ๋์์ ๋ฐ์ํ ์ด๋ฒคํธ๋ DOM ํธ๋ฆฌ๋ฅผ ํตํด ์ ํ๋๋ค.
- ์บก์ฒ๋ง ๋จ๊ณ -> ์ด๋ฒคํธ๊ฐ ์์ -> ํ์ ์ ๋ฌ
- ํ๊น ๋จ๊ณ -> ์ด๋ฒคํธ๊ฐ ์ด๋ฒคํธ ํ๊น์ ๋๋ฌ
- ๋ฒ๋ธ๋ง ๋จ๊ณ -> ์ด๋ฒคํธ๊ฐ ํ์ -> ์์ ์ ๋ฌ
-
์ด๋ฒคํธ ์ดํธ๋ฆฌ๋ทฐํธ/ํ๋กํผํฐ -> ํ๊น, ๋ฒ๋ธ๋ง ์ด๋ฒคํธ๋ง ์บ์น ๊ฐ๋ฅ
-
addEventListener -> ํ๊น, ๋ฒ๋ธ๋ง, ๊ฐญ์ฒ๋ง ์ด๋ฒคํธ ๋ชจ๋ ๊ฐ์น ๊ฐ๋ฅ - ์ธ๋ฒ์งธ ์ธ์๋ฅผ true๋ก!
=> ์ด๋ฒคํธ๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํจ ์ด๋ฒคํธ ํ๊น์ ๋ฌผ๋ก ์์ DOM ์์์์๋ ์บ์น๊ฐ ๊ฐ๋ฅํ๋ค!
-
์ด๋ฒคํธ ์ ํ๊ฐ ์ผ์ด๋์ง ์๋ ์ด๋ฒคํธ ๊ฐ์ฒด
- ํฌ์ปค์ค -> focus/blur
- ๋ฆฌ์์ค -> load/unload/abort/error
- ๋ง์ฐ์ค -> mouseenter/mouseleave
-
currnetTarget -> ์ด๋ฒคํธ๊ฐ ๋ถ์ฐฉ๋ ๋ถ๋ชจ ์์ ์์น ๋ฐํ
-
event.target -> ํด๋ฆญํ ์์ ์์ ๋ฐํ
-
preventDefault ๋ฉ์๋ -> DOM ์์์ ๊ธฐ๋ณธ๋์ ์ค๋จ์ํด
-
stopPropagation ๋ฉ์๋ -> ํ์ DOM ์์์ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ํ๊ธฐ ์ํด ์ด๋ฒคํธ ์ ํ ์ค๋จ์ํด
41์ฅ: ํ์ด๋จธ
setTimeout
- ์ธ์ - ์ฝ๋ฐฑํจ์, delay(1/1000), ์ฝ๋ฐฑํจ์ ์ธ์
- ํ์ด๋จธ id๋ฅผ ๋ฐํ -> clearTimeout๋ก ํ์ด๋จธ ์ทจ์ ๊ฐ๋ฅ!
- setInterval ํจ์๋ ์ ๋ฌ๋ฐ์ ์๊ฐ๋ง๋ค ์ฝ๋ฐฑํจ์๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์คํ!
- ์ธ์๋ setTImeou๊ณผ ๊ฐ์!
๋๋ฐ์ด์ค์ ์ค๋กํ
- ์งง์ ์๊ฐ ์ฐ์ํด์ ๋ฐ์ํ๋ ์ด๋ฒคํธ๋ฅผ ๊ทธ๋ฃนํํด์ ๊ณผ๋ํ ์ด๋ฒคํธ ํธ๋ค๋ฌ ํธ์ถ์ ๋ฐฉ์งํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ!
ํ์ด๋จธ ํจ์์ ํ์ฉ
-
๋๋ฐ์ด์ค
- ํน์ ์๊ฐ๋ณด๋ค ์งง์ ์ด๋ฒคํธ๋ ์ฒ๋ฆฌํ์ง ์๋ค๊ฐ ๋์ค์ ํ๋ฒ์ ์ฒ๋ฆฌ
- debounce ํจ์ -> delay ๋ณด๋ค ์งง์ผ๋ฉด ํ์ด๋จธ ์๊ฐ์ ์ฌ์ค์ ํ์ฌ ์ฝ๋ฐฑํจ์๊ฐ ์คํ๋์ง ์๊ฒํจ!
- ํ์ฉ -> resize ์ด๋ฒคํธ์ฒ๋ฆฌ, input ์
๋ ฅ๊ฐ ajax ์์ฒญ ์๋์์ฑ UI ๊ตฌํ, ๋ฒํผ ์ค๋ณต ํด๋ฆญ ๋ฐฉ์ง ์ฒ๋ฆฌ ๋ฑ
-
์ค๋กํ
- ์งง์ ์๊ฐ ๊ฐ๊ฒฉ ์ฐ์ ์ด๋ฒคํธ๋ฅผ ์ผ์ ์๊ฐ ๋จ์๋ก ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ํธ์ถ๋๋๋ก ํธ์ถ ์ฃผ๊ธฐ๋ฅผ ๋ง๋ฆ
- scroll ์ด๋ฒคํธ ์ฒ๋ฆฌ, ๋ฌดํ ์คํฌ๋กค UI ๊ตฌํ
42์ฅ: ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ
๋๊ธฐ ์ฒ๋ฆฌ
- ํจ์ ์คํ ์์๋๋ก ์์ฐจ์ ์ผ๋ก ์คํ
- ํจ์๊ฐ ํธ์ถ๋ ์์๋๋ก ํจ์ ์คํ ์ปจํ
์คํธ๊ฐ ์คํ ์ปจํ
์คํธ ์คํ์ ํธ์๋๊ธฐ ๋๋ฌธ์!
- JS -> ์ฑ๊ธ ์ฐ๋ ๋ -> ๋ธ๋กํน ํ์(์์
์ค๋จ)๋ฐ์ ํ ์ ์์
๋น๋๊ธฐ ์ฒ๋ฆฌ
- ์คํ ์ค์ธ ํ์คํฌ ์ข
๋ฃ ๋๊ธฐ ์ ์๋ผ๋ ๋ค์ ํ์คํฌ ๊ณง๋ฐ๋ก ์คํ
- ๋ธ๋กํน ๋ฐ์X
- ํ์คํฌ ์คํ ์์๋ฅผ ๋ณด์ฅํ์ง ์์
์ด๋ฒคํธ ๋ฃจํ & ํ์คํฌ ํ
-
JS ์์ง
- ์ฝ ์คํ -> ์คํ์ปจํ
์คํธ ์คํ
- ํ -> ๊ฐ์ฒด ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ, ๊ฐ์ฒด๋ฅผ ์ ์ฅ(ํฌ๊ธฐ ๋ชจ๋ฆ)ํ๊ธฐ ๋๋ฌธ์ -> ๊ตฌ์กฐํX
-
์์ค์ฝ๋ ํ๊ฐ, ์คํ -> JS์์ง์ด ์ฒ๋ฆฌ
-
๊ทธ ์ด์ธ์ ๊ฒ๋ค๊ณผ ์ฝ๋ฐฑ ํจ์์ ํ๊ฐ ์คํ -> ๋ธ๋ผ์ฐ์ or Node๊ฐ ๋ด๋น
-
์ด๋ฒคํธ ๋ฃจํ
-> ์ฝ ์คํ์ด ๋น์ด์๋์ง ํน์ ํ์คํฌ ํ์ ๋๊ธฐ์ค์ธ ํจ์ ํ์ธ ํ ๋น์ด์๋ค๋ฉด ์คํ ์ปจํ
์คํธ๋ฅผ ์ฝ ์คํ์ผ๋ก ํธ์์ํด
-
ํ์คํฌ ํ
-> ๋น๋๊ธฐ ํจ์์ ์ฝ๋ฐฑ ํจ์ ํน์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์์๋ก ๋ณด๊ด๋๋ ์ฅ์(๋๊ธฐ์ฅ์)
=> JS(์ฑ๊ธ)์ ๋ธ๋ผ์ฐ์ (๋ฉํฐ)๊ฐ ํ๋ ฅํ์ฌ ๋น๋๊ธฐ ํจ์ ์คํ!