Вот правильный ответ:
window.addEventListener("load", function() {
console.log(document)
});
Суть в том что если писать так
window.onload = function() {
console.log(document)
}
то такой вызов переопределяет значения ранее присвоенному событию. Т.е. на это событие нельзя повесить несколько обработчиков. Каждое новый обработчик будет переопределять предыдущее.
Именно поэтому у Вас оно не работало!
Надо делать только таким способом.
А все эти грамотеи которые тут советы давали, их советы не имеют силы так как они не в курсе что событие переопределяется при присвоении.
А ведь задача ведь стоит не просто вызвать функцию при загрузке сайта, а вызвать при загрузке всех ресурсов.
Например вызвать AJAX запрос. Какой смысл вызывать AJAX если картинки не прогрузились. Да и вообще тормозить загрузку отображения сайта не нужно без явной причины.
Например комментарии внизу прогрузить, или подгрузить всплывающие подсказки.
Грамотеи даже не спросили у Вас, какая зависимость Вашего скрипта, и является ли критичным ожидание загрузки всех ресурсов сайта.
document.addEventListener('DOMContentLoaded', function() {
} );
Такой способ тупо будет задерживать отображение сайта.