0

我正在构建一个浏览器扩展,我希望它只响应一个特定的 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();
4

0 回答 0