我们如何评估在fetch api(Is there a way to not send cookies when making an XMLHttpRequest on the same origin?)中检索到的http响应?
我们可以通过fetch调用访问responseText。现在我们可以以编程方式(可能通过对responseText的api调用)执行浏览器所做的事情(称为页面加载),例如下载图像,css文件等,并评估脚本以及可能制作xmlhttprequests(如果有的话)。
我希望在完成所有这些操作后得到页面的html内容,即等同于浏览器在完成所有操作后从“加载”状态变为“完成”时。
我希望问题很明确。
答案 0 :(得分:1)
如果您愿意,可以将response.text()
呈现为<iframe>
(visibility: hidden
)。然后,您可以使用所有标准函数操作新文档:
<!DOCTYPE html>
<html>
<head>
<title>This is the page title</title>
<meta charset="UTF-8">
<meta name="description" content="Free Web Help">
<meta name="keywords" content="HTML,CSS,XML,JavaScript">
<meta charset="utf-8">
</head>
<body>
</body>
<script>
var img = new Image();
img.src = "http://cdn.sstatic.net/stackoverflow/img/apple-touch-icon@2.png";
document.body.appendChild(img);
fetch("so.html")
.then(function(response) {
return (response.text());
})
.then(function(responseText) {
// limit the recursion depth to 1
if (!window.frameElement) {
var newDoc = document.createElement('iframe');
document.body.appendChild(newDoc);
newDoc.contentDocument.write(responseText);
}
});
</script>
</html>
要自行尝试,您可以将此代码保存为so.html
并在本地网络服务器上访问,或者check it out here。