如何在Google Chrome上提供google PageAction示例扩展程序?

时间:2012-03-18 13:05:43

标签: javascript google-chrome-extension

这可能是我做了一些蠢事,但我无法弄清楚是什么。我正在尝试使用示例Google Chrome页面扩展演示。可以在此处找到演示源: http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/

这是一个包含2个代码文件的简单程序 - 清单和background.js文件。这是background.js:

// Called when the url of a tab changes.
function checkForValidUrl(tabId, changeInfo, tab) {
  // If the letter 'g' is found in the tab's URL...
  if (tab.url.indexOf('g') > -1) {
    // ... show the page action.
    chrome.pageAction.show(tabId);
  }
};

// Listen for any changes to the URL of any tab.
chrome.tabs.onUpdated.addListener(checkForValidUrl);

这是manifest.json文件:

{
  "name": "Page action by URL",
  "version": "1.0",
  "description": "Shows a page action for urls which have the letter 'g' in them.",
  "background": { "scripts": ["background.js"] },
  "page_action" :
  {
    "default_icon" : "icon-19.png",
    "default_title" : "There's a 'G' in this URL!"
  },
  "permissions" : [
    "tabs"
  ],
  "icons" : {
    "48" : "icon-48.png",
    "128" : "icon-128.png"
  },
  "manifest_version": 2
}

如上所述,此代码对我不起作用。 Chrome加载扩展程序就好了但是当我导航到URL中带有g的页面时,不会显示任何图标。

我找到了这个答案: How do I make page_action appear for specific pages?

所以我尝试了以下内容 -

  • 创建了一个background.html文件:

    <html><head><script> ... cut and pasted contents of background.js above </script></head></html>
    
  • 将manifest.json更改为manifest_version:1而不是manifest_version:2

  • 将manifest.json中的background属性更改为background_page:“background.html”

这很有效。

但我绝对无法使用background.js文件和manifest_version = 2运行此内容。

所以我想知道如何使用manifest_version = 2和background.js文件。此外,这是否也很重要 - 即每个人都只使用manifest_version = 1并且不担心这种东西?

2 个答案:

答案 0 :(得分:3)

您使用的是哪个版本的Chrome?因为我19岁,工作正常。这些新的背景选项出现在18,因此样本真的应该使用minimum_chrome_version键来避免这个问题。如果非主干文档没有指向那些不适用于那些文档所针对的Chrome版本的样本,也会很好。

http://code.google.com/chrome/extensions/trunk/manifestVersion.html
这个页面说....

  

建议不要在Chrome 17或更低版​​本中设置manifest_version 2。   如果您的扩展程序需要在较旧版本的Chrome中运行,请坚持使用   目前版本为1。我们之前会给你足够的警告   版本1停止工作。

有点傻乎乎的?如果他们的Chrome版本是清单版本2之前,我们为什么不能使用后台和background_page?...我试过了,并且它抱怨后台版本无法与清单版本2兼容并且没有安装它。所以你可能想暂时使用清单版本2 虽然阅读那些版本2的文档并开始使用它将要执行的一些实践(例如没有内联脚本)为它做好准备,这绝对是一个好主意。

答案 1 :(得分:1)

可能导致此问题的另一件事:

我遇到了这个问题,因为我忘了按照示例在清单中包含declarativeContent权限。

希望这有助于某人...