【问题标题】:Fetch setBadgeText from another URL从另一个 URL 获取 setBadgeText
【发布时间】:2020-01-24 10:41:43
【问题描述】:

有一个网站,其中包含许多域的指标(短数字)。应该构造一个特殊的 url,比如https://metricsite.com?domain=example.com,然后这个 url 有一个带有度量的 div。这是[此网站][1]。

我想在每个网址上将此指标显示为setBadgeText。我需要类似的东西:

$.fetchURL('https://my-metric-site.com/?domain='+window.location.host+'&source=de', XPath(//div[@class='metric']) {
    var metric = data.metric;
    chrome.browserAction.setBadgeText({text:metric});
});

实现这一目标的方法是什么?

更新 1 徽章中所需的输出应该是:

//div[@class="data"]/span[@class="value"]/text()

//div[@class="data-mini"]/span/span[@class="value"]/text()

Badge 中的可见结果是一个数字,如屏幕截图所示:

更新 2

要直接从源代码中获取数字,应使用 [this url][3]。

[1]: [3]:

【问题讨论】:

  • 您提供的链接中没有divclass="metric"。你想要的输出到底是什么?
  • @JackFleeting 当然,这只是一个例子。我已经用所需输出的 ​​Xpath 更新了我的帖子。
  • 我明白了。不幸的是,这些数据是使用 jscript 动态加载的,所以你需要一个像 selenium 这样的工具来首先获取数据。
  • @JackFleeting 正确!我找到了另一个要获取的 url,这些数字直接放在源代码中。新 url 上的 Xpath 表达式仍然相同,以解决这些数字。我已经更新了我的帖子。

标签: javascript xpath google-chrome-extension


【解决方案1】:

这不是一个完整的答案,但评论太长了,它可能会让你开始:

您不能只在您的网址中使用$.fetchURL;该站点需要某些标头(参数、cookie 等),否则响应是错误的。因此,首先您需要将这些 get 标头转换为 $.fetchURL

一旦你这样做了,这个 xpath 表达式

//div[@class="data"]/span[@class="value"]/text()

应该评估为

401,95

还有这个:

//div[@class="data-mini"]/span/span/text()

应该评估为

436,3

【讨论】:

  • 你能给我指出convert those get headers to $.fetchURL的快速而肮脏的方法吗?
  • @Evgeniy - 我使用 Firefox(显然 chrome 也可以)开发人员选项卡,网络子选项卡。在左侧,您将看到两个(在本例中)get 请求。第一个(同样,在这种情况下)是关键。右键单击它,您将获得一个“复制”菜单项,其中包含多个格式选项。复制您使用的那个并将其合并到您的“fetchUrl”中。抱歉,这很复杂,但有时这就是生活……
  • 你帮我找到了看似正确的解决方案!!!:stackoverflow.com/a/22267609/1992004 - 这段代码是否应该在background.js 中工作?或者XMLHttpRequest还有其他规则吗?
  • @Evgeniy - 恐怕这超出了我的工资等级:D。您可能想将其作为一个单独的问题发布;有很多聪明人知道这些东西......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-20
  • 2017-01-20
  • 1970-01-01
相关资源
最近更新 更多