何时在Chrome资讯清单中使用方括号?

时间:2018-12-11 21:46:28

标签: javascript google-chrome-extension brackets

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

...
  "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键值的看似奇怪的形式说明了更好的示例。好像给键分配了一个数组,该数组有时包含单个元素,有时仅包含字符串,甚至是布尔值。括号不代表数组吗?它们代表索引吗?标签索引?

2 个答案:

答案 0 :(得分:1)

Chrome扩展程序清单遵循JSON格式,这意味着方括号表示某种数组。 Manifest file format docs明确指出字段值何时应为数组,何时不该为数组。例如,

"chrome_url_overrides": {...},

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

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

表示content_scripts的值必须是对象数组。即使您仅在其中定义了一个内容脚本,仍希望将其包含在数组中。

关于您的permissions示例,documentation如下:

  

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

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

答案 1 :(得分:0)

括号仅表示它是一个数组。有时它只包含一个元素,但是仍然需要使用方括号。