background.js:

 chrome.tabs.onCreated.addListener(function(tab) {

    chrome.pageAction.show(tab.id);//Doesn't work...icon is still grey

 });

这是我的扩展代码的一部分。我希望每个新选项卡在创建时都显示页面操作。不幸的是,chrome.pageAction.show()不起作用。每次我创建一个新选项卡时,其图标都会显示为灰色。

但是令我惊讶的是,如果我从控制台调用chrome.pageAction.show(),它会完美地工作。

manifest.json
{
  "name": "show Page Action",
  "description": "show icon in all tabs",
  "version": "1.0",
  "background": {
    "scripts": ["jquery-3.1.1.min.js", "background.js"]
  },
  "page_action": {
    "default_icon": "icon_true.png"
  },
  "manifest_version": 2
}

最佳答案

pageAction API基于URL,因此您需要使用tabs.onUpdated,它在onCreated之后执行,并且具有不同的参数:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    if (changeInfo.url) {
        chrome.pageAction.show(tabId);
    }
});

不要忘记在manifest.json's "tabs" 中添加"permissions"

07-28 02:24
查看更多