DEVLOG

ํŽ˜์ด์ง€ ๋กœ๋“œ ํ›„ ์‹คํ–‰ํ•˜๊ธฐ (window.onload, document.ready) / document.ready๋ฅผ ์ˆœ์ˆ˜์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ! (DOMContentLoaded) ๋ณธ๋ฌธ

frontend/javascript

ํŽ˜์ด์ง€ ๋กœ๋“œ ํ›„ ์‹คํ–‰ํ•˜๊ธฐ (window.onload, document.ready) / document.ready๋ฅผ ์ˆœ์ˆ˜์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ! (DOMContentLoaded)

meroriiDev 2020. 12. 11. 10:01
728x90
๋ฐ˜์‘ํ˜•
๐Ÿ“–  ๋ชฉ์ฐจ

     

    ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์œ„์ชฝ์—์„œ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ์š”์†Œ๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ,

    ์•„๋ž˜์ชฝ์—์„œ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋Š๋ฆฐ ๋กœ๋”ฉ์†๋„ ๋“ฑ์˜ ์ด์œ ๋กœ

    ์šฐ๋ฆฌ๋Š” ์Šคํฌ๋ฆฝํŠธ ๋‚ด์—์„œ ํŽ˜์ด์ง€๋กœ๋“œ ํ›„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณค ํ•œ๋‹ค.

     

    ๋Œ€ํ‘œ์ ์œผ๋กœ js๊ตฌ๋ฌธ์˜ window.onload์™€ jQuery๊ตฌ๋ฌธ์˜ document.ready๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ• ํ…๋ฐ

    ์ด ๋‘˜์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ  ์ด ์™ธ์— ๋˜ ์–ด๋–ค๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์ž!


    window.onload()

    <script>
    	window.onload = function(){
        
        }
    </script>

    ๋Œ€ํ‘œ์ ์ธ ์†์„ฑ์ธ window.onload๋Š” HTML์˜ ๋ชจ๋“  ํƒœ๊ทธ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ ํ›„ ์ฝ”๋“œ๋‚ด์— onload๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์ฝ์–ด๋‚ธ๋‹ค.

    ๋˜ํ•œ js, css๊นŒ์ง€ ๋ชจ~~๋‘ ์ฝ์€ ํ›„์— ์‹คํ–‰์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ๋งค์šฐ๋งค์šฐ ๋Š๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

     

    ๋˜ํ•œ onload๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์‹คํ–‰๋œ onloadํ•จ์ˆ˜๋งŒ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ

    ๋ฌผ๋ก  ํ•œ ํ”„๋กœ์ ํŠธ์— onloadํ•จ์ˆ˜๋Š” ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•ด์„œ ์•ˆ์— ๋‹ค ๋•Œ๋ ค๋„ฃ๊ฒ ์ง€๋งŒ ๋งŒ์—ํ•˜๋‚˜ ์—ฌ๋Ÿฌ๊ฐœ์˜ onloadํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์‹คํ–‰๋œ onloadํ•จ์ˆ˜ ํ•˜๋‚˜๋งŒ! ์‹คํ–‰์ด ๋˜๊ธฐ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

     

    ๋”ฐ๋ผ์„œ ๋งŽ์€ ๋ถ„๋“ค์ด window.onload๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•˜์ง€๋Š” ์•Š์œผ์…จ๋‹ค.

     

    ๊ทธ๋ž˜์„œ ์ด์—๋Œ€ํ•œ ๋Œ€์ฒ˜๋กœ ๋‚˜์˜จ๊ฒƒ์ด JQuery์˜ document.ready์ด๋‹ค.

     

    document.ready

    <script>
    	$(document).ready(function(){
        
        });
    </script>

    document.ready๋Š” window.onload์™€ ๋‹ค๋ฅด๊ฒŒ ํƒœ๊ทธ์˜ ๋กœ๋“œ๋งŒ์„ ๊ฐ์ง€ํ•œ๋‹ค.

    ์ด๋ฏธ์ง€๋‚˜ ์˜์ƒ์ƒ๊ด€์—†์ด DOMํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ ์งํ›„ ์‹คํ–‰๋˜๋ฉด์„œ window.load๋ณด๋‹ค ์กฐ๊ธˆ ๋” ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋˜๊ณ  ์ค‘๋ณต ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ํ•ด๋„ ์ „๋ถ€ ๋‹ค ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

     

    ํ•˜์ง€๋งŒ.. jQuery๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด cdn์„ ์ถ”๊ฐ€ํ•ด์•ผํ•˜๋Š”๋ฐ ์š”์ฆ˜์ฒ˜๋Ÿผ ์ˆœ์ˆ˜์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ค‘์š”์„ฑ์ด ๋†’์•„์ง€๋ฉด์„œ ์ž์—ฐ์Šค๋ ˆ jQuery์˜ ์‚ฌ์šฉ๋นˆ๋„๊ฐ€ ์ค„์–ด๋“คํ…๋ฐ ๊ตณ์ด document.ready ์ด ํ•œ์ค„๋งŒ์„ ์œ„ํ•ด cdn์„ ์ถ”๊ฐ€ํ•˜๋Š”๊ฑด ๋„ˆ๋ฌด๋‚˜๋„ ๋น„ํšจ์œจ์ ์ด๋‹ค.

     

    document.ready์™€ ํฌ๊ฒŒ ๋‹ค๋ฅผ๋ฐ” ์—†๋Š” ์„ฑ๋Šฅ์„ VanilaJS๋งŒ์œผ๋กœ๋„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ 

    ์ด๊ฒƒ์€ DOMContentLoaded์ด๋‹ค.

     

    DOMCountentLoaded

    window.addEventListener('DOMContentLoaded', function()
    {
    
    });

    DOMContentLoaded๋Š” addEventLister์˜ ์†์„ฑ์œผ๋กœ ์“ฐ์ด๊ฒŒ ๋œ๋‹ค.

     

    ์ด ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด document.ready์™€ ํฌ๊ฒŒ ๋‹ค๋ฅผ๋ฐ” ์—†๋Š” ์„ฑ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

    ํ•˜์ง€๋งŒ ie8์ดํ•˜์—์„œ๋Š” ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ณธ์ธ์ด ๋Œ€์ฒ˜ํ•ด์•ผํ•˜๋Š” ํ™˜๊ฒฝ์ด ์–ด๋””๊นŒ์ง€์ธ์ง€ ์ฒดํฌ๋ฅผ ํ•ด ๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

    ํ•˜์ง€๋งŒ ์š”์ฆ˜์€ ie8์ดํ•˜์˜ ์ ์œ ์œจ์ด ๋Œ€ํญ ๋‚ฎ์•„์ง„ ์ƒํƒœ๋ผ ๋ฌธ์ œ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

    (ie8์ดํ•˜์—์„œ๋„ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝœ๋ฐฑ์„ ์งœ๋†“์„ ์ˆ˜ ์žˆ์ง€๋งŒ....ie8์ธ๋ฐ...๊ตณ์ด..?)

     


    ๊ธฐํƒ€..

    ์ด ์™ธ์—๋„ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ๋•Œ click์ด๋ผ๋˜์ง€, change๋ผ๋˜์ง€ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.

    ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋˜ ๊ฒƒ์€ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ• ๋•Œ๊ฐ€ ์•„๋‹Œ ํŽ˜์ด์ง€๋ฅผ ์‹คํ–‰ํ–ˆ์„๋•Œ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๋ถ€๋ถ„์ด์—ˆ๋‹ค.

     

    ํ‰์†Œ์—๋Š” ์•„๋ฌด๋ ‡์ง€ ์•Š๊ฒŒ document.ready๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ jQuery์˜ ์‚ฌ์šฉ์„ ์ตœ๋Œ€ํ•œ ์ค„์ด๋ ค๊ณ  ํ•˜๊ณ  ์žˆ๊ธฐ๋•Œ๋ฌธ์—

    ์ด ๊ธ€์„ ํ†ตํ•ด ๋‚˜๋Š” ์•„๋งˆ DOMContentLoaded๋ผ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€์•Š์„๊นŒ??

    ๋งŒ์•ฝ ์ด ๋ฐฉ๋ฒ•์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ฑฐ๋‚˜ ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์„์ง€๋„ ๋ชจ๋ฅด๋‹ˆ ๋Š์ž„์—†์ด ์ •๋ณด๋ฅผ ์ฐพ์•„๋‹ค๋‹ ํ•„์š”๋Š” ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค:)

    728x90
    ๋ฐ˜์‘ํ˜•
    Comments