【问题标题】:Firefox WebExtension API: how to get the URL of the active tab? [duplicate]Firefox WebExtension API:如何获取活动标签的 URL? [复制]
【发布时间】:2017-09-06 15:59:08
【问题描述】:

致力于将我的旧 Firefox 扩展迁移到最新的 Webextension 格式。之前,我可以通过以下方式获取活动标签的 URL:

var URL = tabs.activeTab.url;

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

谢谢, 浣熊

【问题讨论】:

    标签: javascript firefox tabs firefox-addon-webextensions


    【解决方案1】:

    假设您拥有 manifest.json 中列出的“tabs”权限,您可以通过以下方式在后台脚本中获取活动选项卡的 url:

    // verbose variant
    function logTabs(tabs) {
        let tab = tabs[0]; // Safe to assume there will only be one result
        console.log(tab.url);
    }
      
    browser.tabs.query({currentWindow: true, active: true}).then(logTabs, console.error);
    
    // or the short variant
    browser.tabs.query({currentWindow: true, active: true}).then((tabs) => {
        let tab = tabs[0]; // Safe to assume there will only be one result
        console.log(tab.url);
    }, console.error), 
    

    在内容脚本中,您可以通过以下方式获取 url:

    let url = window.location.href;
    

    不要使用 browser.tabs.getCurrent,因为它不会返回 active 标签,而是返回调用代码运行的标签,这可能是非活动标签。

    【讨论】:

    • 如果您阅读了链接的文档页面,很明显tabs.getCurrent() 仅在非常有限的情况下有效。它非常明确地指出这在实际的后台脚本中不起作用。它仅适用于从选项卡内在后台上下文中运行的脚本,这是相对不常见的情况。
    • @Makyen 我已经编辑了我的答案。
    • @Smile4ever 你如何从侧边栏检索它?我不断收到moz-extension
    • browser.tabs.query({currentWindow: true, active: true}) 应该可以工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多