实现清单属性¶
与函数和事件类似,实现新的清单键需要在模式中编写定义,并扩展 API 的 ExtensionAPI
实例。
WebExtension 的 manifest.json
内容使用名为 WebExtensionManifest
的类型进行验证,该类型在命名空间 manifest
中定义。添加新属性时的第一步是扩展模式,以便包含新属性的清单通过验证。这可以通过如下所示的 "$extend"
属性来完成
[
"namespace": "manifest",
"types": [
{
"$extend": "WebExtensionManifest",
"properties": {
"my_api_property": {
"type": "string",
"optional": true,
...
}
}
}
]
]
下一步是通知 WebExtensions 框架,此 API 应实例化并在加载使用新清单键的扩展时收到通知。对于内置 API,这可以通过 API 清单中的 manifest
属性来完成(例如,ext-toolkit.json
)。请注意,此属性是一个数组,因此扩展可以实现多个属性
"myapi": {
"schema": "...",
"url": "...",
"manifest": ["my_api_property"]
}
最后一步是编写代码来处理新的清单条目。WebExtensions 框架在扩展启动时处理扩展的清单,这在现有扩展的新浏览器会话启动时发生,并且可以在会话过程中扩展首次安装或启用时发生,或者在扩展更新时发生。上面的 JSON 片段导致 WebExtensions 框架在启动扩展时遇到特定清单键时加载 API 实现,然后使用属性名称作为参数调用其 onManifestEntry()
方法。不会传递属性的值,但完整清单可通过 this.extension.manifest
获取
this.myapi = class extends ExtensionAPI {
onManifestEntry(name) {
let value = this.extension.manifest.my_api_property;
/* do something with value... */
}
}