Javascript Chrome扩展:获取当前站点名称

Javascript Chrome扩展:获取当前站点名称,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我刚刚开始构建我的第一个Chrome扩展。我的应用程序中的一个功能是获取当前站点的名称。例如,如果当前url与“*:/*.facebook.com/”匹配,我会将此url解释为facebook,并知道网站名称 我应该怎么做呢?因为内容脚本被注入到页面中,所以您可以在内容脚本本身中使用window.location.host,并获取您的站点名称。不清楚您想要获取的是主机名还是页面标题,但如果需要,您可以同时获取这两个名称 在内容脚本中您可以执行以下操作: var site = location.h

我刚刚开始构建我的第一个Chrome扩展。我的应用程序中的一个功能是获取当前站点的名称。例如,如果当前url与“*:/*.facebook.com/”匹配,我会将此url解释为facebook,并知道网站名称


我应该怎么做呢?

因为内容脚本被注入到页面中,所以您可以在内容脚本本身中使用
window.location.host
,并获取您的站点名称。

不清楚您想要获取的是主机名还是页面标题,但如果需要,您可以同时获取这两个名称

在内容脚本中您可以执行以下操作:

var site = location.hostname,
    title = document.title;

alert("Site: " + site + " - Title: " + title);
如果要从后台页面执行此操作,并且不想使用内容脚本或在选项卡中插入代码,则只能获取主机名:

var site;

chrome.tabs.query({/* some query */}, function(tabs) {
    site = tabs[0].url.split("/")[2];
    alert("Site: " + site);
});
如果您还希望从后台页面获取页面标题,则需要实现一些消息传递:

var title;

chrome.runtime.onMessage.addListener(function(message, sender, sensResponse) {
    if (message.title) {
        title = message.title;
        alert("Title: " + title);
    }
});

chrome.tabs.query({/* some query */}, function(tabs) {
    chrome.tabs.executeScript(tabs[0].id, {code: "chrome.runtime.sendMessage({title: document.title});"});
});

有关我在上述代码段中使用的方法的更多信息,请参见以下文档链接:


您是否试图在内容脚本中这样做?任何方式都可以,尽管我认为在内容脚本中这样做是不可能的(因为我们无法访问chrome.tabs)。我想做的是向后台发送消息并返回解决方案。我认为如果您尝试从内容脚本访问
window.location.host
,应该可以工作,因为脚本被注入到该页面中是有效的。伟大而简单的解决方案。谢谢大家!@欧姆里亚哈龙,请把这个问题变成一个答案。避免在评论中回答-不能将其标记为已接受,这会使OP的“跟踪记录”变得不好,而且问题是否得到了回答也不明显。非常感谢!非常详细和有用的回答。:)