Firefox WebExtensions API 如何对当前标签网站进行 AJAX 调用



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

是否有任何内容阻止我使用提取 API 或 XMLHttpRequest 来联系此端点?

我使用这些方法的尝试只是告诉我发生了服务器错误,并且在我尝试调试扩展时,网络选项卡中没有任何内容。我觉得应该有一个用于此任务的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请求。

您可以在此处阅读更多内容。

相关内容

  • 没有找到相关文章