DOMContentLoaded란?

이 이벤트는 웹 페이지의 HTML 문서가 모두 파싱되어 DOM 트리가 완성된 시점에 발생합니다.

DOMContentLoaded의 의미

  • DOM(Document Object Model): HTML 문서가 브라우저에 의해 해석되어 만들어진 구조화된 객체 트리입니다.
  • DOMContentLoaded 이벤트
    • 브라우저가 HTML을 모두 읽고, DOM 트리를 완성하면 발생합니다.
    • 이 시점에는 자바스크립트로 모든 HTML 요소를 안전하게 조작할 수 있습니다.
  • load 이벤트와의 차이
    • DOMContentLoaded

      • HTML 파싱(구조화)만 끝나면 바로 발생합니다. (이미지, CSS, 외부 스크립트 등 리소스의 로딩은 기다리지 않음)
    • load

      • HTML뿐만 아니라 모든 리소스(이미지, CSS 등)가 완전히 로드된 후 발생합니다.

사용 하는 이유

  • 자바스크립트가 HTML 요소를 조작할 때, DOM이 완전히 준비되지 않은 상태라면 오류가 발생할 수 있습니다.
  • DOMContentLoaded를 활용하면 HTML 구조가 완성된 후에만 스크립트가 실행되도록 할 수 있어 안전하게 DOM 조작이 가능합니다.

예시

document.addEventListener('DOMContentLoaded', function () {  
  const textarea = document.getElementById('content');  
  const counter = document.getElementById('charCount');  
  
  const updateCount = () => {  
    const length = textarea.value.length;  
    counter.textContent = `${length}/500`;  
  };  
  
  textarea.addEventListener('input', updateCount);  
  
  // 초기값 세팅 (폼 값이 미리 채워져 있을 수도 있으므로)  
  updateCount();  
});