我可以针对Fetch API响应使用DOM查询方法吗?

时间:2017-12-14 08:57:06

标签: javascript fetch-api

我尝试自动与旧的网络界面进行交互,目前只展示用户驱动的表单,因此我需要通过动态请求从网页中抓取一些信息。

如果我使用XHR,我可以将响应视为Document,这使我可以使用querySelector等方法从特定节点检索信息。不过,我想尝试使用Fetch API,它只给我一个Body。这有blobformDatajsontext,但我没有看到任何可以让我将其视为Document的内容。

我错过了什么吗?我可以直接从fetch获取文档或其他可查询的内容吗?如果没有,是否有一种简单的方法来获取字符串(来自Body.text())并将其转换为文档?

1 个答案:

答案 0 :(得分:9)

  

我可以直接从fetch获取文档或其他可查询的内容吗?如果没有,是否有一种简单的方法来获取字符串(来自Body.text())并将其转换为文档?

您无法直接从Fetch API本身获取Document。但是,您可以使用DOMParser并为其parseFromString方法提供Fetch Body.text()承诺解析为的文本。

fetch("https://enable-cors.org/")
  .then(response => response.text())
  .then(text => {
    const parser = new DOMParser();
    const htmlDocument = parser.parseFromString(text, "text/html");
    const section = htmlDocument.documentElement.querySelector("section");
    document.querySelector("div").appendChild(section);
  })
<div></div>