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
}
答案 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"
。