window.addEventListener("DOMContentLoaded",function(){
})window.addEventListener('DOMContentLoaded',()=>{
});<script src="" defer></script>
body, то он срабатывает сразу, особенно если в нем нет прослушивания событий load или DOMContentLoaded, то же самое, если подключить скрипт в head. Однако, если подключить скрипт перед закрытием тэга body, то DOM будет уже построен и большая часть будет доступна в скрипте, конечно, если большая часть DOM не строится после загрузки страницы.