【问题标题】:How to ask for a specific element using Xmlhttprequest parameters如何使用 Xmlhttprequest 参数请求特定元素
【发布时间】:2018-05-05 23:16:36
【问题描述】:

我正在寻找的元素:

<h1 id="itemSummaryPrice" style="color: rgb(255, 255, 255);">42 - 47</h1>

我想制作一个使用 XMLHttpRequest GET METHOD 来检查另一个网站上的值的 chrome 扩展,我知道我可以提供 URL、用于缩小响应的参数。所以我的问题是如何创建一个只给我正在寻找的响应中的元素的 URL?如果可能的话。

【问题讨论】:

  • 不,不可能。
  • 嗯,仅使用 URL 是不可能的,您可以使用解析器并在加载后返回项目
  • 这是否意味着我必须使用正则表达式或其他东西来解析孔响应?
  • 不是正则表达式,You can't parse HTML with regex.,但 DOMParser 会做

标签: javascript google-chrome-extension xmlhttprequest


【解决方案1】:

您不能只请求文档的一部分(节点)。您必须请求整个内容,对其进行解析,然后从中选择您想要的内容:

var request = new XMLHttpRequest();
request.open("GET", yourUrl);

request.onload = function() {
    var doc = new DOMParser().parseFromString(request.responseText, "text/html");
    var el = doc.getElementById("itemSummaryPrice"); // the element you want
}

request.send(null);

或者您可以将responseType 设置为"document" 并让XMLHttpRequest 在内部进行解析,然后使用responseXML

var request = new XMLHttpRequest();
request.open("GET", yourUrl);
request.responseType = "document";

request.onload = function() {
    var doc = request.responseXML;
    var el = doc.getElementById("itemSummaryPrice"); // the element you want
}

request.send(null);

【讨论】:

  • 我遇到的最后一个问题是,我无法获取文本,即我的 sn-p 的“42 - 47”。在询问 var el 时,您知道我应该如何寻找或寻找什么吗?我试过 .innerText 但没有机会。
  • 不,您的代码是正确的,但 var el 会返回此元素:

    但我需要 innerText 中的值,但它似乎消失了跨度>
  • @Tomale 试试el.textContent
  • nop,它也不起作用,好像我从 getElment 获得的元素只是采用

    并忽略 html 中的其他值元素...
  • @Tomale 我认为服务器正在向您发送没有任何内容的元素。或者,更糟糕的是,元素的内容稍后由脚本填充(如果您使用解析器,则不会执行该脚本)。阅读更多关于它的信息here
猜你喜欢
  • 2021-01-24
  • 2015-07-21
  • 2018-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多