【问题标题】:How to upgrade extension to manifest v2 and remain backwards compatible?如何将扩展升级到清单 v2 并保持向后兼容?
【发布时间】:2012-09-26 19:44:14
【问题描述】:

我想将我的所有扩展升级到版本 2,但仍然向后兼容仍然安装旧版 chrome 的人。

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

【问题讨论】:

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


    【解决方案1】:

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

    1. 默认的 Content Security Policy 不允许通过扩展上下文中的 <script> 标签加载外部 JavaScript 文件,并且不允许执行通过字符串创建的 JavaScript 代码:内联事件侦听器、内联脚本、eval、等等
      功能损坏的后果是 JSONP 和基于 eval 的模板引擎。这些可以通过使用普通的跨站AJAX分别解决sandboxChrome 21+
    2. web_accessible_resources 字段在一个空列表中启动,因此默认情况下所有资源都被列入黑名单。
    3. "background_page" 清单条目变得不可用(被 "background" + "scripts""page" 取代)。

    Manifest 2 还允许使用一些 API,for example the chrome.storage API。当 manifest v2 被省略时,this message 将出现在您的扩展程序下方。

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

    1. 任何符合 CSP 的代码也适用于 manifest v1。
    2. 所有扩展程序的来源都被列入白名单,因此普通网页可以访问。
    3. "background": {"scripts": ["..."]}(和 "page")与 Chrome 17 及更低版本向后不兼容,因为它是 introduced in Chrome 18。请改用"background_page": "background.html"

    如果您不使用后台页面,则可以使用所有 Chrome 版本的扩展程序。在其他情况下,无法实现这样的混合(manifest v1+v2 兼容)扩展。

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

    【讨论】:

    • 谢谢,关于 chrome.storage 的非常好的信息!
    猜你喜欢
    • 1970-01-01
    • 2016-02-20
    • 2019-10-27
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 2021-03-26
    • 1970-01-01
    相关资源
    最近更新 更多