Когда использовать квадратные скобки в манифесте Chrome? - PullRequest
0 голосов
/ 12 декабря 2018

Что они представляют?Где это задокументировано?Например,

...
  "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 голосов
/ 18 декабря 2018

Манифест расширения Chrome соответствует формату JSON, что означает, что квадратные скобки представляют собой какой-то массив.В формате файла манифеста документы явно указывают, когда значение поля должно быть массивом, а когда - нет.Например,

"chrome_url_overrides": {...},

означает, что значение chrome_url_overrides должно быть объектом (обозначается {...}), а

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

означает, чтозначение content_scripts должно быть массивом объектов.Даже если там определен только один скрипт контента, он все равно должен быть заключен в массив.

Что касается вашего примера permissions, то вот что говорит документация :

Каждое разрешение может быть одним из списка известных строк (например,«геолокация») или шаблон совпадения

Никогда не говорится, что «может быть список списков строк».Более того, пример на странице документов далее показывает, что это просто массив строк, а не массив массивов.

0 голосов
/ 12 декабря 2018

Скобка просто означает, что это массив.Иногда он содержит только один элемент, но скобки все еще нужны.

...