Firefox WebExtension API:如何获取活动选项卡的URL?

时间:2017-09-06 15:59:09

标签: javascript firefox tabs firefox-webextensions

将我的旧版Firefox扩展程序迁移到最新的Webextension格式。之前,我能够通过以下方式获取活动选项卡的URL:

  list($queue, $messageCount, $consumerCount) = $channel->queue_declare(QUEUE_NAME, true);

现在,它不起作用。我看到了tabs.getCurrent()和tabs.Tab - >的一些参考资料。网址,但没有找到如何使用它的单一示例。那么我如何获取活动Firefox选项卡的URL并将其放入变量中以供进一步使用?

谢谢, 浣熊

1 个答案:

答案 0 :(得分:11)

假设你有"标签"您的manifest.json中列出的权限,您可以使用以下内容获取后台脚本中当前选项卡的URL:

function logTabs(tabs) {
    let tab = tabs[0]; // Safe to assume there will only be one result
    console.log(tab.url);
}

function onError(err){
    console.error(err);
}

browser.tabs.query({currentWindow: true, active: true}).then(logTabs, onError);

在内容脚本中,您可以使用以下命令获取网址:

let url = window.location.href;

这可能也有效,具体取决于"背景"您关注的背景:

function onGot(tabInfo) {
  let url = tabInfo.url; // url is a property from the Tab object, see https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs/Tab
}

function onError(error) {
  console.error(`Error: ${error}`);
}

browser.tabs.getCurrent().then(onGot, onError);

尽管如此,我建议方法1用于后台脚本,方法2用于内容脚本。

来源:developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs/getCurrent

如果您还有其他问题,请随时join the #webextensions channel on irc.mozilla.org