Как выполнить полную перезагрузку страницы используя HTML-контент из JavaScript строки?

У меня есть ситуация с ajax запросами которая немного отличается от обычной. В большинстве случаев мой ajax возвращает только часть страницы для обновления определенного блока. Но иногда сервер может вернуть полную HTML страницу со всеми тегами включая html, head и body.

Когда я получаю ответ от сервера, я могу определить что это полная страница, но возможно ли как-то инициировать полную перезагрузку страницы используя этот HTML контент? Мне нужно чтобы запустился полный цикл событий загрузки страницы.

Я уже пробовал просто заменить содержимое body элемента, но это не запускает нужные события и не позволяет изменить содержимое в секции head. Подойдут решения с использованием любых популярных фреймворков.

document.open() + document.write() + document.close() работает. Берешь полный HTML с сервера и пишешь через document.write(). Перезаписывает весь документ включая head, запускает все события загрузки как при обычной навигации. Но способ радикальный - весь JS контекст обнуляется.

А что если через Blob API? Создай блоб из HTML строки с типом text/html, сгенерируй URL через createObjectURL() и редиректь на него. Браузер обработает как обычную страницу, события сработают. Только потом не забудь revokeObjectURL() вызвать - память почистить.

Используй window.location.replace() с data URI. Делаешь data:text/html;charset=utf-8, + encodeURIComponent(htmlString) и кидаешь в replace(). Браузер думает что это обычная навигация, перезагружает скрипты и стили. С энкодингом могут быть косяки на больших файлах, но обычно работает нормально.