【问题标题】:How to get the google PageAction sample extension working on Google Chrome as supplied?如何让谷歌 PageAction 示例扩展在提供的谷歌浏览器上运行?
【发布时间】:2012-04-03 06:03:18
【问题描述】:

这可能是我在做一些愚蠢的事情,但我不知道是什么。我正在尝试让一个示例 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_page: "background.html"

效果很好。

但我绝对无法使用 background.js 文件和 manifest_version = 2 运行这个东西。

所以我想知道如何使用 manifest_version = 2 和一个 background.js 文件。另外,这很重要吗?也就是说,每个人都只是使用 manifest_version = 1 而不担心这种东西吗?

【问题讨论】:

    标签: javascript google-chrome-extension


    【解决方案1】:

    您使用的是哪个版本的 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 和 background_page 可以依靠?...我试过了,它抱怨 background_page 不适用于清单版本 2 并且没有安装它。因此,您可能想暂时推迟使用清单版本 2。
    尽管阅读版本 2 的这些文档并开始使用它将要强制执行的一些实践(例如没有内联脚本)是一个好主意,但要为此做好准备。

    【讨论】:

    • 很棒 - 我在 ubuntu 上使用 chrome 17,所以我假设这就是问题所在。
    【解决方案2】:

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

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

    希望这对某人有所帮助...

    【讨论】:

      猜你喜欢
      • 2012-04-21
      • 1970-01-01
      • 2015-04-17
      • 2014-07-24
      • 2016-06-08
      • 1970-01-01
      相关资源
      最近更新 更多