그렇습니다. 기본적으로 JavaScript가 동기화되어 있다는 사실을 잊어 버린 것을 제외하고는 기본적으로 옳았습니다 .DOM 이로 드 되기 전에 코드를 실행하면 이를 해결할 수있는 몇 가지 방법이 있습니다.
1) DOM이 완전히로드 되었는지 확인한 다음 원하는 것을 수행하십시오 . 예를 들어 DOMContentLoaded 를 들을 수 있습니다 :
<script>
document.addEventListener("DOMContentLoaded", function(event) {
console.log("DOM fully loaded and parsed");
});
</script>
2) 가장 일반적인 방법은 스크립트 태그를 document
(바디 태그 뒤에) 하단에 추가하는 것입니다 .
<html>
<head>
</head>
<body>
</body>
<script src="/bundle.js"></script>
</html>
3)를 사용 window.onload
하면 전체 페이지가로드 될 때 발생합니다 (img 등)
window.addEventListener("load", function() {
console.log("Everything is loaded");
});
4)를 사용 document.onload
하면 DOM 이 준비 되면 시작됩니다 .
document.addEventListener("load", function() {
console.log("DOM is ready");
});
DOM 이 준비되어 있는지 확인하는 옵션이 더 있지만 짧은 대답은 모든 경우에 DOM이 준비되어 있는지 확인하기 전에 스크립트를 실행 하지 않는 것입니다 ...
JavaScript는 DOM 요소와 함께 작동하며 사용할 수없는 경우 null 을 반환 하고 전체 응용 프로그램을 중단 할 수 있습니다 ... 그래서 항상 JavaScript를 실행할 준비가되어 있는지 확인하십시오 ...