清单文件版本

扩展程序、主题背景以及应用程序只是打包的资源,另外须附带一 manifest.json 文件来描述包的内容。 该文件的格式大体上是稳定的,但是偶尔需要重大更改,解决特定的问题。 所以,开发人员应该在清单文件中设置 manifest_version 属性,指定扩展包使用的清单文件规范版本。

当前版本

在Chrome 18及更高版本中,开发人员应该指定 ‘manifest_version’: 2

{
  ...,
  "manifest_version": 2,
  ...
}

清单文件版本1在Chrome 18及更高版本中 已弃用 ,但是版本2还不是必需的。 还没有准备转换至Chrome 18中新的清单文件版本的扩展程序、应用程序以及主题背景既 可以明确地指定 版本1 ,也可以完全省略该属性。 在将来的某一时刻,将 不再支持 清单文件 版本1Google 将提供充足的警告信息,从载入版本1的未打包扩展程序时的警告开始,并随着时间推移逐步转变。

Note

不建议

在Chrome 17或更低版本中设置 manifest_version 2 如果扩展需要在较旧版本的Chrome浏览器中运行,目前请继续使用 版本1 ,在 版本1 停止工作前 Google 将会给出充分的警告

清单文件版本 1 支持计划

2012 年 8 月

  • 网上应用店将不再允许创建清单文件版本 1 的扩展程序。
  • 网上应用店仍然允许更新现有的清单文件版本 1 的扩展程序。

2013 年 3 月

  • 从 2013 年 3 月 4 日开始,网上应用店将不允许更新清单文件版本 1 的扩展程序。

2013 年 4 月

  • Chrome 27 Beta 将不再为清单文件版本 1 的扩展程序打包(或为开发而加载)。

2013 年 6 月

  • 清单文件版本 1 的扩展程序将从网上应用店的展区、搜索结果以及分类页面中移除。
  • 通知邮件将会发送至网上应用店中仍然有清单文件版本 1 的扩展程序开发人员,提醒他们这些项目将不会发布,并提供更新指示。

2013 年 9 月

  • 网上应用店将取消发布所有清单文件版本 1 的扩展程序。
  • 最终的通知邮件将发送至网上应用店中仍然有清单文件版本 1 的扩展程序开发人员。
  • Chrome 浏览器仍然会继续加载和运行已安装的清单文件版本 1 的项目。

2014 年 1 月

  • Chrome 浏览器将不再加载或运行清单文件版本 1 的扩展程序。

版本1与版本2之间的改变

  • 内容安全策略默认情况下设置为 “script-src ‘self’; object-src ‘self’”

    这会对开发人员产生一系列影响,在 内容安全策略(content_security_policy)文档 中详细描述。

  • 扩展程序包的资源默认情况下不再可用于外部网站(作为图片的src属性或者script标签)。

    如果希望网站能够载入我们扩展程序包中的资源,需要通过 :ref:`web_accessible_resources <manifest-accessible>`清单文件属性明确将它列入白名单。 这对于通过插入内容脚本在网页上建立界面的扩展程序特别有用。

  • background_page 属性已经由 background 属性取代,

    它包含 scriptspage 属性中的任意一个,详情在 后台页面 文档中可用。

  • 浏览器按钮的更改:

    • 清单文件中的 browser_actions 键以及 chrome.browserActions

      API已经消失,请改用单数形式的 browser_action 以及 chrome.browserAction

    • browser_actionicons 属性已移除,请改用 default_icon 属性或者 chrome.browserAction.setIcon

    • browser_actionname 属性已移除,请改用 default_title 属性或者 chrome.browserAction.setTitle

    • browser_actionpopup 属性已移除,请改用 default_popup 属性或者 chrome.browserAction.setPopup

    • browser_actiondefault_popup 属性不能再指定为对象,而必须为 字符串

  • 页面按钮的更改:

  • chrome.extension.getTabContentses(!!!) [?]原文就这样的chrome.extension.getExtensionTabs 将消失,请改用

chrome.extension.getViews({ “type”: “tab” }) - Port.tab 将消失,请改用 Port.sender

See also

(^.^)

原文: Manifest Version