首页 > 解决方案 > 何时在 Chrome 清单中使用方括号?

问题描述

它们代表什么?这是在哪里记录的?例如,

...
  "content_scripts":[
    {
      "matches": ["<all_urls>"],
      "css" :  ["inject.css"],
      "js": ["filter.js"],
      "run_at": "document_end",
      "all_frames": true
    }],
...

或者

...
  "permissions": [
    "file://*/*",
    "tabs",
    "storage",
    "activeTab"
  ],
...

我怎么知道这是否不应该,例如,

...
  "permissions": [
    ["file://*/*"],
    ["tabs"],
    ["storage"],
    ["activeTab"]
  ],
...

虽然更好的例子是用 content_script 键值的看似奇怪的形式来说明的。看起来好像键被分配了一个数组,并且该数组有时包含单个元素,有时它仅包含字符串甚至布尔值。括号不代表数组吗?它们可能代表一个索引吗?标签的索引?

标签: javascriptgoogle-chrome-extensionbrackets

解决方案


Chrome 扩展清单遵循 JSON 格式,这意味着方括号表示某种数组。Manifest 文件格式文档明确说明字段值何时应为数组,何时不应为数组。例如,

"chrome_url_overrides": {...},

表示 的值chrome_url_overrides 必须是一个对象(用 表示{...}),而

"content_scripts": [{...}],

表示 的值content_scripts 必须是对象数组。即使您在那里只定义了一个内容脚本,它仍然应该包含在一个数组中。

关于您的示例permissions,以下是文档中的说明:

每个权限可以是已知字符串列表中的一个(例如“地理位置”)或匹配模式

它从不说“可以是字符串列表的列表”。此外,文档页面上的示例进一步说明它只是一个字符串数组,而不是数组数组。


推荐阅读