Как сохранить HTML документ в файл через JavaScript

У меня есть объект document и мне нужно сохранить весь HTML код страницы в отдельный файл. Хочу получить полное содержимое между тегами <html>, включая все элементы, стили и скрипты, чтобы страница могла корректно отобразиться. При этом не важно, будут ли включены сам тег <html> и DOCTYPE или нет.

exportPage("mypage.html")

Или можно как-то так:

downloadHTML(currentDoc, "mypage.html")

Также интересует случай, когда нужно сохранить документ из iframe:

var frame = document.getElementById("myFrame")
var frameDoc = frame.contentDocument || frame.contentWindow.document
downloadHTML(frameDoc, "mypage.html")

Как это можно реализовать в JavaScript? Какие есть способы экспорта HTML содержимого в файл?

Тут всё просто: берёшь document.documentElement.outerHTML для полного HTML и используешь Blob API. Создаёшь функцию, получаешь весь код, заворачиваешь в Blob с типом text/html, делаешь временную ссылку через URL.createObjectURL() и кликаешь по ней программно. С iframe работает нормально, но смотри на CORS если фрейм с другого домена.

Попробуй использовать document.documentElement.outerHTML для получения всего HTML с тегом <html>. Затем создавай Blob и загружай файл через URL.createObjectURL. С iframe могут быть проблемы из-за CORS - ты имеешь доступ к документу внутри него?

я делал такое через blob объект и URL.createObjectURL. очень просто - берешь document.documentElement.outerHTML, создаешь blob с типом text/html, делаешь ссылку для скачивания и программно кликаешь. работает во всех современных браузерах. только помни - внешние стили могут не сохраниться, но основное содержимое будет