mhtml 无法通过直接另存 html 文件生成,因其需浏览器实际加载并封装所有资源(含图片、css、js)为 base64 编码的 mime 容器;chrome 需启用 chrome://flags/#save-page-as-mhtml 并重启才支持,firefox 则依赖关闭压缩选项的 unmht 插件。

不能直接把 HTML 源码文件“另存为”成 MHTML——MHTML 是浏览器在页面渲染完成后,将 DOM、内联资源、外链资源(图片/CSS/JS)一并序列化封装的结果,不是纯文本转换。
为什么 document.write 或保存 .html 文件无法生成有效 MHTML
你手头的 index.html 是静态源码,不包含已加载的图片二进制数据、运行后生成的 DOM 结构、或被 JS 注入的样式。MHTML 要求浏览器实际发起过资源请求,并把响应体 Base64 编码后嵌入 MIME boundary 中。直接改后缀(如 page.html → page.mhtml)只会让文件无法被识别或打开空白。
- 浏览器不会解析未加载的 HTML 文件来补全缺失资源
-
document.execCommand('SaveAs', true, 'x.mht')在现代 Chromium/Firefox 中已废弃且多数不生效 - 用
wget --convert-links --page-requisites下载的是 HTML+文件夹,不是单个 MHTML
Chrome / Edge 必须启用 flag 才能调出 MHTML 保存选项
Chrome 自 75 版起默认隐藏该功能,chrome://flags/#save-page-as-mhtml 不只是“可选开关”,而是唯一激活路径。跳过这步,右键、三点菜单、快捷键 Ctrl+Shift+S 全部无效。
- 输入地址后必须点击右下角
Relaunch重启浏览器——仅刷新标签页没用 - 重启后访问目标网页,确保所有图片、字体、异步脚本加载完成(滚动到底部确认无占位图)
- 保存时下拉菜单里出现
网页,单个文件 (*.mhtml)才算成功启用
Firefox 需依赖 UnMHT 插件,且压缩选项必须关闭
Firefox 原生不支持 MHTML 导出,UnMHT 是目前兼容性最稳的插件,但默认勾选的 压缩HTML主体 会导致部分 <script></script> 内容被破坏,页面交互失效或样式丢失。
- 安装后必须重启 Firefox,否则右键菜单不显示
另存为 MHTML - 保存对话框中务必取消勾选
压缩HTML主体 - 文件名栏手动补全后缀:输入
report.mht,而非只输report - 生成的
.mht文件建议用 Edge 或专用阅读器验证,Chrome 可能因安全策略拒绝加载内联脚本
真正关键的不是“怎么点保存”,而是“浏览器是否完成了资源聚合”。MHTML 文件体积大、加载慢、脚本受限,但它唯一不可替代的价值是:断网双击即开,无需关心路径、权限、解压或服务器状态。如果页面含 WebAssembly、ES2022+ 语法或大量动态模块,优先考虑 SingleFile 扩展生成带内联 JS 的单 HTML 文件,而不是强行走 MHTML 流程。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











