Chrome extension: 获取当前站点名称

Chrome extension: get current site name

我刚刚开始构建我的第一个 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);
});

如果您还想从后台页面获取页面标题,您需要使用executeScript()注意:自 2021 年 1 月起,使用 Manifest V3 with chrome.scripting.executeScript() 而不是 chrome.tabs.executeScript()

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});"});
});

有关我在上述代码片段中使用的方法的更多信息,您可以查看这些文档链接: