我正在构建一个浏览器扩展,我希望它只响应一个特定的 url 列表 - 目前,我只是用一个 URL 测试它,我试图让一个图标从白色变为绿色访问特定网站。(我想要浏览器操作,而不是页面操作)。当我访问示例 URL 时,图标当前没有改变颜色。
所以,准确地说,问题是:我怎样才能让 Chrome 扩展程序通过改变它的图标颜色来响应特定的 URL 集合?
这是我编写/调整的代码:
var url = "https://www.cadbury.co.uk/";
/* Listen for external messages (messages from web-pages) */
chrome.runtime.onMessageExternal.addListener(function(url, sender) {
if (sender.url == url) {
chrome.browserAction.setIcon({ path: "green.png" });
}
else {
chrome.browserAction.setIcon({ path: "white.png" });
}
});
我将上面的代码基于问题如何根据用户登录更改图标的颜色,这与我的问题有关。
更新 [25/10/15] - 当访问列出的 URL 之一时(当前仅 Cadbury),下面的代码在搜索栏中显示一个绿色图标。但我想要的是工具栏上的图标 - 即浏览器操作(不是页面操作),并且该图标在访问特定网站时更改颜色。
// When the extension is installed or upgraded ...
chrome.runtime.onInstalled.addListener(function() {
// Replace all rules ...
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
// With a new rule ...
// This makes green icon show in search bar...
chrome.declarativeContent.onPageChanged.addRules([
{
// That fires when a page's URL contains a 'cadbury.co.uk' ...
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: {urlContains: 'cadbury.co.uk' },
})
],
// And shows the extension's page action.
actions: [ new chrome.declarativeContent.ShowPageAction() ]
}
]);
});
});
我想我需要使用 browserAction。
这段代码类似于我正在寻找的行为,但不是在单击图标时更改颜色,而是希望它在访问特定网址时更改颜色。
var min = 1;
var max = 5;
var current = min;
function updateIcon() {
chrome.browserAction.setIcon({path:"icon" + current + ".png"});
current++;
if (current > max)
current = min;
}
chrome.browserAction.onClicked.addListener(updateIcon);
updateIcon();