如何在 iframe 中呈现 .mht 文件



我想使用无头 chrome 拍摄页面的快照,这将向我返回一个文件,所以我正在创建一个 mht 文件,因为它将包含有关网页的更多信息。所以,现在我想在 iframe 中渲染这个快照,但我无法这样做。

<iframe src="file:///home/user/untitled1.mht"></iframe>

这是在呈现后返回错误。

Attempted to load a multipart archive into an subframe

出于安全原因,在 iframe 中加载 MHTML 文件的内容在技术上是不可能的。这里不是重新散列,而是直接来自从事 Chromium 项目的开发人员的答案。

另一种方法是在 iframe 中动态加载 HTML 的内容。这不会产生任何 CORS 问题,因为这在技术上不会直接链接到第三方网站 URL。

主 HTML 文件:

<!DOCTYPE html>
<html lang="en">
<body>
<div>an iframe</div>
<iframe id="f1" width="100%" height="800px"></iframe>
<script src="test.js"></script>
</body>
</html>

JS文件(测试.js(:

const htmlContent = `
<!DOCTYPE html>
<html lang="en">
<body>
<strong>Hello World</strong>
</body>
</html>
`
const htmlblob = new Blob([htmlContent], {
type: "text/html"
});
const frame = document.querySelector("#f1");
frame.src = URL.createObjectURL(htmlblob);

或者,这里有一个JSfiddle。

最新更新