Почему вылезает ошибка doc.head is null при полной замене html страницы?

Ошибка "doc.head is null" возникает в JavaScript, когда вы пытаетесь обратиться к элементу head документа (например, через document.head), который пока не существует или не был загружен в момент обращения к нему.

При полной замене HTML страницы с помощью JavaScript (например, через document.open() и document.write()), документ полностью перезагружается. В результате старый head элемент удаляется, а новый создается заново. Поэтому, если вы пытаетесь обратиться к document.head сразу после перезагрузки страницы, есть вероятность, что браузер еще не успел создать новый элемент head, и поэтому вы получаете ошибку "doc.head is null".

Чтобы избежать этой ошибки, вам нужно убедиться, что обращение к document.head происходит только после того, как новый head элемент будет создан браузером. Например, можно использовать событие DOMContentLoaded, которое срабатывает, когда весь HTML-документ загружен и разобран браузером. И только после этого обращаться к document.head.

Пример использования события DOMContentLoaded:

document.addEventListener('DOMContentLoaded', function() {
    // Код, в котором вы обращаетесь к document.head
});

Таким образом, вы можете избежать ошибки "doc.head is null" при полной замене HTML страницы в JavaScript, обеспечив корректное выполнение вашего кода.