๐ Events
HTML ๋ฌธ์์ ์๋ช ์ฃผ๊ธฐ์ ๋ค์๊ณผ ๊ฐ์ 3๊ฐ์ง ์ฃผ์ ์ด๋ฒคํธ๊ฐ ๊ด์ฌํ๋ค.
- DOMContentLoaded : ๋ธ๋ผ์ฐ์ ๊ฐ HTML์ ์ ๋ถ ์ฝ๊ณ DOM ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ ์ฆ์ ๋ฐ์ ์ด๋ฏธ์ง ํ์ผ(<img>)์ด๋ ์คํ์ผ์ํธ ๋ฑ์ ๊ธฐํ ์์์ ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค.
- load : HTML๋ก DOM ํธ๋ฆฌ๋ฅผ ๋ง๋๋ ๊ฒ ์์ฑ๋์์ ๋ฟ๋ง ์๋๋ผ ์ด๋ฏธ์ง, ์คํ์ผ์ํธ ๊ฐ์ ์ธ๋ถ ์์๋ ๋ชจ๋ ๋ถ๋ฌ์ค๋ ๊ฒ์ด ๋๋ฌ์ ๋ ๋ฐ์
- beforeunload/unload : ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ๋ ๋ ๋ ๋ฐ์
์ด๋ฒคํธ ํ์ฉ ์์
- DOMContentLoaded: DOM์ด ์ค๋น๋ ๊ฒ์ ํ์ธํ ํ ์ํ๋ DOM ๋ ธ๋๋ฅผ ์ฐพ์ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํด ์ธํฐํ์ด์ค๋ฅผ ์ด๊ธฐํํ ๋
- load : ์ด๋ฏธ์ง ์ฌ์ด์ฆ๋ฅผ ํ์ธํ ๋ ๋ฑ. ์ธ๋ถ ์์์ด ๋ก๋๋ ํ์ด๊ธฐ ๋๋ฌธ์ ์คํ์ผ์ด ์ ์ฉ๋ ์ํ์ด๋ฏ๋ก ํ๋ฉด์ ๋ฟ๋ ค์ง๋ ์์์ ์ค์ ํฌ๊ธฐ๋ฅผ ํ์ธํ ์ ์์
- beforeunload: ์ฌ์ฉ์๊ฐ ์ฌ์ดํธ๋ฅผ ๋ ๋๋ ค ํ ๋, ๋ณ๊ฒฝ๋์ง ์์ ์ฌํญ๋ค์ ์ ์ฅํ๋์ง ํ์ธ์์ผ์ค ๋
- unload: ์ฌ์ฉ์๊ฐ ์ง์ง ๋ ๋๊ธฐ ์ ์ ์ฌ์ฉ์ ๋ถ์ ์ ๋ณด๋ฅผ ๋ด์ ํต๊ณ์๋ฃ๋ฅผ ์ ์กํ๊ณ ์ ํ ๋
โ๏ธ DOMContentLoaded
DOMContentLoaded ์ด๋ฒคํธ๋ document ๊ฐ์ฒด์์ ๋ฐ์
๋ฐ๋ผ์ ์ด ์ด๋ฒคํธ๋ฅผ ๋ค๋ฃจ๋ ค๋ฉด addEventListener๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
document.addEventListener("DOMContentLoaded", ready);
// "document.onDOMContentLoaded = ..."๋ ๋์ํ์ง ์์ต๋๋ค.
DOMContentLoaded์ scripts
๋ธ๋ผ์ฐ์ ๋ HTML ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ๋ ๋์ค์ <script> ํ๊ทธ๋ฅผ ๋ง๋๋ฉด, DOM ํธ๋ฆฌ ๊ตฌ์ฑ์ ๋ฉ์ถ๊ณ <script>๋ฅผ ์คํ
์คํฌ๋ฆฝํธ ์คํ์ด ๋๋ ํ์์ผ ๋๋จธ์ง HTML ๋ฌธ์๋ฅผ ์ฒ๋ฆฌ
<script>์ ์๋ ์คํฌ๋ฆฝํธ๊ฐ DOM ์กฐ์ ๊ด๋ จ ๋ก์ง์ ๋ด๊ณ ์์ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ๋ฐฉ์ง์ฑ
๋ฐ๋ผ์ DOMContentLoaded ์ด๋ฒคํธ ์ญ์ <script> ์์ ์๋ ์คํฌ๋ฆฝํธ๊ฐ ์ฒ๋ฆฌ๋๊ณ ๋ ํ์ ๋ฐ์
๐ DOMContentLoaded๋ฅผ ๋ง์ง ์๋ ์คํฌ๋ฆฝํธ
์์ ๊ฐ์ ๊ท์น์ ๋ ๊ฐ์ง ์์ธ์ฌํญ
async ์์ฑ์ด ์๋ ์คํฌ๋ฆฝํธ๋ DOMContentLoaded๋ฅผ ๋ง์ง ์๋๋ค.
document.createElement('script')๋ก ๋์ ์ผ๋ก ์์ฑ๋๊ณ ์นํ์ด์ง์ ์ถ๊ฐ๋ ์คํฌ๋ฆฝํธ๋ DOMContentLoaded๋ฅผ ๋ง์ง ์๋๋ค.
DOMContentLoaded์ styles
์ธ๋ถ ์คํ์ผ์ํธ๋ DOM์ ์ํฅ์ ์ฃผ์ง ์๊ธฐ ๋๋ฌธ์ DOMContentLoaded๋ ์ธ๋ถ ์คํ์ผ์ํธ๊ฐ ๋ก๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค.
โ ๏ธ ์์ธ
์คํ์ผ์ํธ๋ฅผ ๋ถ๋ฌ์ค๋ ํ๊ทธ ๋ฐ๋ก ๋ค์์ ์คํฌ๋ฆฝํธ๊ฐ ์์นํ๋ฉด ์ด ์คํฌ๋ฆฝํธ๋ ์คํ์ผ์ํธ๊ฐ ๋ก๋๋๊ธฐ ์ ๊น์ง ์คํ๋์ง ์๋๋ค.
๋ธ๋ผ์ฐ์ ๋ด์ฅ ์๋์์ฑ
Firefox์ Chrome, Opera์ ํผ ์๋์์ฑ(form autofill)์ DOMContentLoaded์์ ๋ฐ์.
readyState
๋ฌธ์๊ฐ ๋ก๋๋์๋์ง ์๋์ง๋ฅผ ํ๋จํ ์ ์๋ ๊ฒฝ์ฐ
์ด๋ด ๋ ํ์ฌ ๋ก๋ฉ ์ํ๋ฅผ ์๋ ค์ฃผ๋ document.readyState ํ๋กํผํฐ
ํ๋กํผํฐ์ ๊ฐ
- "loading" : ๋ฌธ์๋ฅผ ๋ถ๋ฌ์ค๋ ์ค์ผ ๋
- "interactive" : ๋ฌธ์๊ฐ ์์ ํ ๋ถ๋ฌ์์ก์ ๋
- "complete" : ๋ฌธ์๋ฅผ ๋น๋กฏํ ์ด๋ฏธ์ง ๋ฑ์ ๋ฆฌ์์ค๋ค๋ ๋ชจ๋ ๋ถ๋ฌ์์ก์ ๋
document.readyState์ ๊ฐ์ ํ์ธํ๊ณ ์ํฉ์ ๋ง๊ฒ ํธ๋ค๋ฌ๋ฅผ ์ค์ ํ๊ฑฐ๋ ์ฝ๋๋ฅผ ์คํ
์ฐธ๊ณ
DOMContentLoaded, load, beforeunload, unload ์ด๋ฒคํธ
'IT > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
argument vs parameter (0) | 2022.04.08 |
---|---|
requestAnimationFrame vs setTimeout (0) | 2022.04.08 |
๋ฐฐ์ด์ ์์๋ฅผ ๋ฌด์์๋ก ์๊ธฐ (1) | 2022.04.01 |
๋ฌธ์์ด ์นํ (replace, RexExp, match) (0) | 2022.03.13 |
TypeScript vs PropTypes (0) | 2022.03.09 |
๋๊ธ