Javascript 从扩展中获取当前URL?

Javascript 从扩展中获取当前URL?,javascript,google-chrome-extension,Javascript,Google Chrome Extension,对于我的Google Chrome扩展,我需要获取当前的URL。我知道,在常规JavaScript中,我可以使用它来获取链接和主机: var hostname = window.location.hostname; var url = window.location.href; 但我如何在扩展中做到这一点?实际上,我是以它为例来实现的,但对于我想做的事情来说,这似乎有点过头了。是否有更好的方法获取当前URL,也许不需要向页面中注入脚本?您可以使用chrome.tabs.query()将当前UR

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

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

但我如何在扩展中做到这一点?实际上,我是以它为例来实现的,但对于我想做的事情来说,这似乎有点过头了。是否有更好的方法获取当前URL,也许不需要向页面中注入脚本?

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

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

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

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