chrome.pageAction.show()不在tabs.onCreated侦听器中工作

时间:2016-10-26 07:07:26

标签: javascript json google-chrome google-chrome-extension

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
}

1 个答案:

答案 0 :(得分: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 "permissions"中添加"tabs"