Tak, w zasadzie to, co zrobiłeś, jest słuszne, ale zapominasz, że JavaScript jest synchronizowany w wielu przypadkach, więc jeśli uruchamiasz kod przed załadowaniem DOM , istnieje kilka sposobów na rozwiązanie tego:
1) Sprawdź, czy DOM jest w pełni załadowany, a następnie rób, co chcesz, możesz odsłuchać DOMContentLoaded, na przykład:
<script>
document.addEventListener("DOMContentLoaded", function(event) {
console.log("DOM fully loaded and parsed");
});
</script>
2) Bardzo popularnym sposobem jest dodanie znacznika skryptu do dolnej części document
(po znaczniku body):
<html>
<head>
</head>
<body>
</body>
<script src="/bundle.js"></script>
</html>
3) Używanie window.onload
, które jest uruchamiane po załadowaniu całej strony (img itp.)
window.addEventListener("load", function() {
console.log("Everything is loaded");
});
4) Używanie document.onload
, które jest uruchamiane, gdy DOM jest gotowy:
document.addEventListener("load", function() {
console.log("DOM is ready");
});
Jest jeszcze więcej opcji, aby sprawdzić, czy DOM jest gotowy, ale krótka odpowiedź brzmi: NIE uruchamiaj żadnego skryptu, zanim nie upewnisz się, że DOM jest gotowy w każdym przypadku ...
JavaScript działa razem z elementami DOM i jeśli nie są one dostępne, zwróci null , może uszkodzić całą aplikację ... więc zawsze upewnij się, że jesteś w pełni gotowy do uruchomienia JavaScript zanim to zrobisz ...