【问题标题】:Grab current URL from within extension?从扩展中获取当前 URL?
【发布时间】:2026-02-09 22:30:01
【问题描述】:

对于我的 Google Chrome 扩展程序,我需要获取当前 URL。我知道,在常规 JavaScript 中,我可以使用它来获取链接和主机:

var hostname = window.location.hostname;
var url = window.location.href;

但是如何在扩展程序中做到这一点?实际上,我以this 为例使其工作,但对于我想做的事情来说似乎有点矫枉过正。有没有更好的方法来获取当前 URL,可能不需要在页面中注入脚本?

【问题讨论】:

    标签: javascript google-chrome-extension


    【解决方案1】:

    您可以使用chrome.tabs.query() 将当前 URL 获取到扩展代码中的变量中:

    chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function(tabs) {
        var url = tabs[0].url;
    });
    

    请记住:将使用url 变量的代码部分应该在上面的(匿名)回调函数中,而不是其他地方。否则,您将获得一个 undefined 值,因为 Chrome 扩展代码是异步执行的。

    【讨论】:

    • 太棒了!一个问题,有没有办法从选项卡中提取主机名?我通过抓取 url 并使用“new URL()”将其转换为带有主机名的实际 url 来解决它,但也许有一个更简单的选择。
    • 使用 URL() 现在是在大多数现代浏览器中处理 URL 的标准方法(不仅适用于 Chrome 扩展程序),因此在您的情况下,var hostname = new URL(tabs[0].url).hostname; 应该只给您主机名。