如何升级到清单v2的扩展并保持向后兼容?

时间:2012-09-21 07:19:22

标签: google-chrome google-chrome-extension version manifest

我想将我的所有扩展程序升级到版本2,但仍然可以向仍然安装旧版Chrome的用户保持向后兼容。

由于目前不支持多个清单版本,我想知道哪个是支持"manifest_version": 2及其属性的Chrome的最低版本。

1 个答案:

答案 0 :(得分:1)

Chrome 18中引入了清单v2。使用Manifest版本2将several requirements添加到扩展名,最重要的是:

  1. 默认Content Security Policy,它禁止在扩展程序的上下文中通过<script>标记加载外部JavaScript文件,并且不允许执行通过字符串创建的JavaScript代码:内联事件侦听器,内联脚本, eval等。
    功能损坏的后果是JSONP和基于eval的模板引擎。这些可以通过使用普通的跨站点AJAX sandbox Chrome 21 + 来解决。
  2. web_accessible_resources字段在空列表中启动,因此默认情况下所有资源都被列入黑名单。
  3. "background_page"清单条目变得不可用(由"background" + "scripts""page"取代。
  4. Manifest 2还允许使用某些API for example the chrome.storage API。当遗漏清单v2时,this message将显示在您的扩展程序下方。

    除了最后一条评论之外,所有这些要求都会导致更严格的Chrome扩展程序编码指南(与清单v1相比)。

    1. 任何符合CSP的代码也在manifest v1中工作。
    2. 所有扩展程序的来源都列入白名单,因此普通网页可以访问。
    3. "background": {"scripts": ["..."]}(和"page")与Chrome 17及更低版本向后兼容,因为它是introduced in Chrome 18。请改用"background_page": "background.html"
    4. 如果您不使用背景页,则只能 使用所有Chrome版本的一个扩展程序。在其他情况下,无法实现这种混合(清单v1 + v2兼容)扩展。

      如果您打算分发两个不同的扩展名,请在清单文件中设置"minimum_chrome_version": "18"。不要忘记提及旧版浏览器扩展程序的位置。