๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT/JavaScript

DOMContentLoaded ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง

by ๋ฌด๋…ˆ 2022. 4. 1.

๐Ÿ“Œ 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 ์ด๋ฒคํŠธ

 

DOMContentLoaded, load, beforeunload, unload ์ด๋ฒคํŠธ

 

ko.javascript.info

 

๋ฐ˜์‘ํ˜•

'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

๋Œ“๊ธ€