[ JavaScript ] 자바스크립트 기본 문법 | 문서로딩(load, DOMContentLoaded) | 스크립트 태그 위치

2021. 2. 10. 02:30·Archive/Develop
728x90
반응형

이미지 출처 :     https://commons.wikimedia.org/wiki/File:JavaScript-logo.png

 

 

 

 

 

 

 

해당 포스팅은 생활코딩의 이고잉 님의 강의를 기반으로 개인 공부용으로 정리한 포스팅임을 미리 알립니다.

 

 

 


 

 

 

 

자바스크립트 기본 문법  ::  문서 로딩

 

 

 

 

웹페이지를 프로그래밍적으로 제어하기 위해서는

웹페이지의 모든 요소에 대한 처리가 끝나야 합니다.

 

 

이것을 알려주는 이벤트가 load 와 DOMContentLoaded 입니다.

 

 

예시로 load 가 왜 필요한지 보겠습니다.

 

 

 

 

<html>
    <head>
        <script>
        var t = document.getElementById('target');
        console.log(t);
        </script>
    </head>
    <body>
        <p id="target">Hello</p>
    </body>
</html>

 

 

 

위 코드의 실행결과는 null 이 출력되는 것을 볼 수 있습니다.

 

 

 

 

 

 

 

그 이유는 <p id="target">Hello</p>가 로딩되기 전에 자바스크립트가 실행되었기 때문입니다.

 

 

 

 

이를 해결하기 위한 방법 중 하나는 아래 코드와 같이 스크립트를 문서의 끝에 위치시키는 것입니다.

 

 

 

 

<html>
    <head>
    </head>
    <body>
        <p id="target">Hello</p>
<script>
    var t = document.getElementById('target');
    console.log(t);
</script>
    </body>
</html>

 

 

 

 

 

결과가 제대로 출력되는 것을 확인할 수 있습니다.

 

 

 

 

 

다른 방법으로, load 이벤트를 이용할 수 있습니다.

 

 

 

<head>
    <script>
        window.addEventListener('load', function(){
            var t = document.getElementById('target');
            console.log(t);
        })
    </script>
</head>
<body>
    <p id="target">Hello</p>
</body>

 

 

 

window 전역객체에 load 되었을 때 이벤트를 추가합니다.

 

 

그런데 load 이벤트는 문서내의 모든 리소스(이미지, 스크립트)의 다운로드가 끝난 후에 실행됩니다.

 

이것은 에플리케이션의 구동이 너무 지연되는 부작용을 초래할 수 있습니다.

 

 

 

반면, DOMContentLoaded는 문서에서 스크립트 작업을 할 수 있을 때 실행되기 때문에

이미지 다운로드를 기다릴 필요가 없습니다.

 

 

 

 

 

<html>
    <head>
        <script>
            window.addEventListener('load', function(){
                console.log('load');
            })
            window.addEventListener('DOMContentLoaded', function(){
                console.log('DOMContentLoaded');
            })
        </script>
    </head>
    <body>
        <p id="target">Hello</p>
    </body>
</html>

 

 

 

 

 

DOMContentLoaded 가 load 보다 먼저 출력되는 것을 알 수 있습니다.

 

 

 

DOMContentLoaded 이벤트는 IE9을 포함한 모든 브라우저에서 지원하고 있습니다.

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ JavaScript ] 자바스크립트 기본 문법 | jQuery 이벤트 (on API 사용법)  (0) 2021.02.10
[ JavaScript ] 자바스크립트 기본 문법 | 마우스 이벤트(click,dbclick,mousedown,shtftKey,altKey,clientX,clientY)  (0) 2021.02.10
[ JavaScript ] 자바스크립트 기본 문법 | 폼(form)태그 이벤트(submit, change, focus,blur)  (0) 2021.02.10
[ JavaScript ] 자바스크립트 기본 동작 취소(preventDefault)  (0) 2021.02.10
[ JavaScript ] 자바스크립트 기본 문법 | 이벤트 전파(버블링과 캡쳐링)  (0) 2021.02.09
'Archive/Develop' 카테고리의 다른 글
  • [ JavaScript ] 자바스크립트 기본 문법 | jQuery 이벤트 (on API 사용법)
  • [ JavaScript ] 자바스크립트 기본 문법 | 마우스 이벤트(click,dbclick,mousedown,shtftKey,altKey,clientX,clientY)
  • [ JavaScript ] 자바스크립트 기본 문법 | 폼(form)태그 이벤트(submit, change, focus,blur)
  • [ JavaScript ] 자바스크립트 기본 동작 취소(preventDefault)
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    Python
    파이썬 백준
    파이썬 기초
    파이썬
    Git
    백준 풀이
    docker
    코드업
    비박스
    코드업 기초
    C++
    코드업 파이썬 기초 100제
    자바스크립트
    백준
    자바스크립트 API
    파이썬 기초 문제
    파이썬 문제
    Oracle
    보안뉴스
    백준 문제풀이
    Codeup
    파이썬 알고리즘
    javascript
    백준 파이썬
    oracle db
    Django
    카카오 100일 프로젝트
    오라클
    자바스크립트 객체
    장고
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ JavaScript ] 자바스크립트 기본 문법 | 문서로딩(load, DOMContentLoaded) | 스크립트 태그 위치
상단으로

티스토리툴바