这可能是我做了一些蠢事,但我无法弄清楚是什么。我正在尝试使用示例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
这很有效。
但我绝对无法使用background.js文件和manifest_version = 2运行此内容。
所以我想知道如何使用manifest_version = 2和background.js文件。此外,这是否也很重要 - 即每个人都只使用manifest_version = 1并且不担心这种东西?
答案 0 :(得分:3)
您使用的是哪个版本的Chrome?因为我19岁,工作正常。这些新的背景选项出现在18,因此样本真的应该使用minimum_chrome_version
键来避免这个问题。如果非主干文档没有指向那些不适用于那些文档所针对的Chrome版本的样本,也会很好。
http://code.google.com/chrome/extensions/trunk/manifestVersion.html
这个页面说....
有点傻乎乎的?如果他们的Chrome版本是清单版本2之前,我们为什么不能使用后台和background_page?...我试过了,并且它抱怨后台版本无法与清单版本2兼容并且没有安装它。所以你可能想暂时使用清单版本2 虽然阅读那些版本2的文档并开始使用它将要执行的一些实践(例如没有内联脚本)为它做好准备,这绝对是一个好主意。建议不要在Chrome 17或更低版本中设置manifest_version 2。 如果您的扩展程序需要在较旧版本的Chrome中运行,请坚持使用 目前版本为1。我们之前会给你足够的警告 版本1停止工作。
答案 1 :(得分:1)
可能导致此问题的另一件事:
我遇到了这个问题,因为我忘了按照示例在清单中包含declarativeContent权限。
希望这有助于某人...