始终显示page_action图标

时间:2014-08-12 15:15:21

标签: javascript google-chrome-extension

我是Chrome扩展程序的新手,但我想开始搞砸它们以获得它的乐趣。我知道总是显示page_action图标是违反惯例的,但是为了学习,我想为每个标签显示它。

我一直在阅读,我很难搞清楚什么是弃用的,什么不是。文档似乎没有注意到某些方法已被弃用。

这是我到目前为止所做的一段时间 - 因为我已经搞错了Javascript所以请耐心等待;这都是非常简单的事情。

那么始终显示page_action图标的最简单方法是什么?我是否接近正确的轨道?感谢。


的manifest.json

{
"manifest_version" : 2,

"name": "Hello World",
"version": "0.1",
"description": "Hello World",

"page_action": {
    "default_icon": "images/blackWhite.jpg", 
    "default_title": "HW!"
  },

"background": {
    "scripts": ["scripts/background.js"]
 }
}

background.js

chrome.tabs.getSelected(null, function(tab {
  var id = tab.id
  chrome.pageAction.show(id)
}))

1 个答案:

答案 0 :(得分:2)

您的代码只会执行一次,而它应该在每次更新标签时执行。

这样做的一种方法是收听chrome.tabs.onUpdated,就像在sample extension中一样。

chrome.tabs.onUpdated.addListener(function(tabId, change, tab) {
  if (change.status == "complete") {
    chrome.pageAction.show(tabId);
  }
});

这将使页面操作在页面完成加载时显示。

如果您希望它更早出现,您可以,例如,在没有过滤条件的情况下收听onUpdatedonCreatedonReplaced(如果您致电{not you not care) {1}}几次)。

修改:实际上,另一个好的组合是show()(检测网址更改)和onUpdated(检测标签更改)。

或者,您可以使用在onActivated的所有页面中加载的内容脚本,并向背景发送消息以显示页面操作。