javascript - Firefox WebExtensions API 如何对当前选项卡网站进行 AJAX 调用

标签 javascript ajax google-chrome-extension firefox-addon-webextensions browser-tab

我希望我的网络扩展能够对用户当前正在查看的网站进行 AJAX 调用。我知道当前网站在 /foo/bar?query= 处有一个可用端点。

有什么东西阻止我使用 fetch APIXMLHttpRequest联系此端点?

我尝试使用这些方法只是告诉我发生了服务器错误,并且当我尝试调试扩展时,网络选项卡中没有出现任何内容。我觉得应该有一个 WebExtensions API 来完成这项任务,但我找不到。

最佳答案

您可以使用 browser.tabs.getCurrent() 获取描述用户正在查看的当前选项卡的对象。 。该对象有一个属性 url ,然后您可以使用它来创建 XMLHttpRequest。

browser.tabs.getCurrent().then(currentTab => {
    let xhr = new XMLHttpRequest();
    xhr.open("GET", currentTab.url);
    // ...
});

编辑:
正如 Makyen 所指出的,tabs.currentTab实际上并不是你想要的。相反tabs.queryactive: true应该使用。类似的东西应该有效:

browser.tabs.query({active: true, currentWindow: true}).then(tabs => {
    let currentTab = tabs[0];
    let xhr = new XMLHttpRequest();
    xhr.open("GET", currentTab.url);
    // ...
})

为了发出跨源请求,您需要获得 manifest.json 中的许可文件:

{
  ...
  "permissions": [
    "tabs",
    "<all_urls>"
  ],
  ...
}

<all_urls>例如,将允许您向任何 url 发出 http 请求。

您可以阅读更多here .

关于javascript - Firefox WebExtensions API 如何对当前选项卡网站进行 AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44907697/

相关文章:

javascript - 使用 jQuery 更新按钮上的数据属性

gmail - 如何从已发送的邮件中获取 Gmail 对话的 URL?

javascript - 有选择地包含依赖于网站的 javascript 文件

JavaScript : ResponseText values getting Mixed up?

javascript - YouTube 控制可访问性报告

javascript - 从 contenteditable div 中获取已删除的节点(Froala Editor)

javascript - 无法在 JavaScript 类中设置属性

javascript - 如何自动更新html内容?

javascript - Chrome 应用扩展程序无法与 Oauth Javascript 配合使用

javascript - MankSans 字体的 Safari 兼容性字母间距问题