Iam*_*uib 7 html mhtml headless-browser
我想使用无头 Chrome 拍摄页面快照,它将返回一个文件给我,因此我正在创建一个 mht 文件,因为它将包含有关网页的更多信息。所以,现在我想在 iframe 中渲染这个快照,但我无法这样做。
<iframe src="file:///home/user/untitled1.mht"></iframe>
Run Code Online (Sandbox Code Playgroud)
渲染后会返回错误。
Attempted to load a multipart archive into an subframe
Run Code Online (Sandbox Code Playgroud)
出于安全原因,在 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>
Run Code Online (Sandbox Code Playgroud)
JS文件(test.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);
Run Code Online (Sandbox Code Playgroud)
或者,这里有一个JSfiddle。