如何评估fetch api中收到的http响应

时间:2015-08-25 19:31:46

标签: javascript http response

我们如何评估在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内容,即等同于浏览器在完成所有操作后从“加载”状态变为“完成”时。

我希望问题很明确。

1 个答案:

答案 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