DOMContentLoaded
DOMContentLoaded 이벤트는 document 객체에서 발생합니다.
따라서 이 이벤트를 다루려면 addEventListener를 사용해야 합니다.
<script>
document.addEventListener("DOMContentLoaded", ready);
// "document.onDOMContentLoaded = ..."는 동작하지 않습니다.
</script>
DOMContentLoaded와 scripts
브라우저는 HTML 문서를 처리하는 도중에 scrip 태그를 만나면 , DOM 트리 구성을 멈추고 script를 실행한다. 따라서 DOMContentLoaded 이벤트 역시 script 안에 있는 스크립트가 처리되고 난 후에 발생합니다.
// 아래에 script alert이 실행되고 난 후 두번째로 실행
<script>
document.addEventListener("DOMContentLoaded", () => {
alert("DOM이 준비되었습니다!");
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.3.0/lodash.js"></script>
// 스크립트 아래코드가 먼저 실행
<script>
alert("라이브러리 로딩이 끝나고 인라인 스크립트가 실행되었습니다.");
</script>
window.load
window 객체의 load 이벤트는 스타일, 이미지 등의 리소스들이 모드 로드되었을 때 실행된다. load 이벤트는 onload 프로퍼티를 통해서도 사용할 수 있다.
<script>
window.onload = function() { // window.addEventListener('load', (event) => {와 동일합니다.
alert('페이지 전체가 로드되었습니다.');
// 이번엔 이미지가 제대로 불러와 진 후에 얼럿창이 실행됩니다.
alert(`이미지 사이즈: ${img.offsetWidth}x${img.offsetHeight}`);
};
</script>
<img id="img" src="https://en.js.cx/clipart/train.gif?speed=1&cache=0">
위 예시에서 window.onload는 이미지가 모두 로드되고 난 후 실행되기 때문에 이미지 사이즈가 제대로 출력되는 것을 확인할 수 있다.
window.unload
window 객체의 unload 이벤트는 사용자가 페이지를 떠날 때, 즉 문서를 완전히 닫을 때 실행된다. unload 이벤트에선 팝업창을 닫는 것과 딜레이가 없는 작업을 수행할 수 있다.
window.beforeunload
사용자가 현재 페이지를 떠나 다른 페이지로 이동하려 할 때나 창을 닫으려고 할 때 beforeunload 핸들러에서 추가 확인을 요청할 수 있다.
<script>
window.onbeforeunload = function() {
return false;
};
</script>
beforeunload 이벤트를 취소하려 하면 브라우저는 사용자에게 확인을 요청한다.