历史搜索

Chrome 浏览器插件 V3 版本 Manifest.json 文件全字段详解

游客2024-09-04 09:30:02
目录文章目录
  1. Manifest.json 文件格式

Manifest.json 文件格式

每个扩展程序的根目录中都必须有一个 manifest.json 文件,其中列出了有关该扩展程序的结构和行为的重要信息。

1、Demo 展示

1. 最小文件

{
  "manifest_version": 3,
  "name": "My Chrome Ext",
  "version": "1.0.0",
  "description": "Chrome Ext",
  "icons": {
    "48": "icon-48.png",
    "128": "icon-128.png"
  },
}

2. 增加 content_scripts

{
  "manifest_version": 3,
  "name": "Run script automatically",
  "description": "Add Context Scripts",
  "version": "1.0",
  "icons": {
    "16": "icon-16.png",
    "32": "icon-32.png",
    "48": "icon-48.png",
    "128": "icon-128.png"
  },
  "content_scripts": [
    {
      "js": [
        "content-script.js"
      ],
      "matches": [
        "http://*.example.com//"
      ]
    }
  ]
}

3. 增加 service_worker

{
  "manifest_version": 3,
  "name": "Click to run",
  "description": "Add Service Worker",
  "version": "1.0",
  "icons": {
    "16": "icon-16.png",
    "32": "icon-32.png",
    "48": "icon-48.png",
    "128": "icon-128.png"
  },
  "background": {
    "service_worker": "service-worker.js"
  },
  "action": {
    "default_icon": {
      "16": "icon-16.png",
      "32": "icon-32.png",
      "48": "icon-48.png",
      "128": "icon-128.png"
    }
  },
  "permissions": ["scripting", "activeTab"]
}

4. 增加 action

{
  "manifest_version": 3,
  "name": "Popup extension that requests permissions",
  "description": "Add Action",
  "version": "1.0",
  "icons": {
    "16": "icon-16.png",
    "32": "icon-32.png",
    "48": "icon-48.png",
    "128": "icon-128.png"
  },
  "action": {
    "default_popup": "popup.html"
  },
  "host_permissions": [
    "https://*.example.com/"
  ],
  "permissions": [
    "storage"
  ]
}

5. 增加侧边栏

{
  "manifest_version": 3,
  "name": "Side panel extension",
  "version": "1.0",
  "description": "Extension with a default side panel.",
  "icons": {
    "16": "images/icon-16.png",
    "48": "images/icon-48.png",
    "128": "images/icon-128.png"
  },
  "side_panel": {
    "default_path": "sidepanel.html"
  },
  "permissions": ["sidePanel"]
}

2、Manifest.json 文件字段及解析

1. Chrome 插件所必需的 key

1.1 manifest_version
  • 一个整数,用于指定扩展程序使用的清单文件格式版本。
  • 唯一支持的值是 3。
1.2 name
  • 一个字符串,用于在 Chrome 应用商店、安装对话框和用户的 Chrome 扩展程序页面 (chrome://extensions) 中标识扩展程序。
  • 长度上限为 45 个字符。
1.3 version
  • 一个字符串,用于标识扩展程序的版本号。
  • 一到四个以英文句点分隔的整数,用于标识此扩展程序的版本。下面几条规则适用于整数:
    • 整数必须介于 0 到 65,535 之间(含 0 和 65,535)。
    • 非零整数不能以 0 开头。例如,032 无效,因为它以零开头。
    • 它们不能都为零。例如,0 和 0.0.0.0 是无效的,而 0.1.0.0 是有效的。
  • 以下是有效版本的一些示例:
    • “version”: “1”
    • “version”: “1.0”
    • “version”: “2.10.2”
    • “version”: “3.1.2.4567”
  • 比较从最左边的整数开始。然后,如果这些整数相等,则比较右侧的整数,依此类推。例如,1.2.0 是比 1.1.9.9999 更新的版本。
  • 缺少的整数等于零。例如,1.1.9.9999 比 1.1 更新,1.1.9.9999 低于 1.2。
"manifest_version": 3, 
"name": "My Chrome Ext Name", 
"version": "0.0.1",

2. Chrome 应用商店所需的 key

2.1 description
  • 一个 JSON 字符串,用于描述 Chrome 网上应用店和用户的扩展程序管理页面上的扩展程序。
  • 长度上限为 132 个字符。

Chrome 浏览器插件 V3 版本 Manifest.json 文件全字段详解 1

{
  "options_page": "index.html",
}
3.27 options_ui

指定 HTML 文件的路径,该文件允许用户在 Chrome 扩展程序页面更改扩展程序选项。

{
  "name": "My extension",
  "options_ui": {
    "page": "options.html",
    "open_in_tab": false
  },
}
3.28 permissions

允许使用特定的扩展程序 API

"permissions": [
  "storage",
  "activeTab",
  "scripting"
]
3.29 requirements

列出使用扩展程序所需的技术。

"requirements": {
  "3D": {
    "features": ["webgl"]
  }
}
3.30 sandbox
  • 定义一组扩展程序页面,它们无权访问扩展程序 API 或直接访问非沙盒化页面。
  • 扩展程序的沙盒化网页使用的内容安全政策在 content_security_policy 键中指定。
  • 处于沙盒环境中会产生以下两个影响:
    • 沙盒化页面将无权访问扩展程序 API,也无法直接访问未经过沙盒化的页面(可通过 postMessage() 与它们进行通信)。
    • 沙盒化页面不受扩展程序其余部分使用的内容安全政策 (CSP)(有自己的单独的 CSP 值)的约束。这意味着,例如,它可以使用内嵌脚本和 eval
{
  "content_security_policy": {
    "sandbox": "sandbox allow-scripts; script-src 'self' https://example.com"
  },
  "sandbox": {
    "pages": [
      "page1.html",
      "directory/page2.html"
    ]
  },
}
3.31 short_name
  • 一个字符串,包含要在字符空间有限时使用的扩展程序名称的缩写版本。
  • 长度上限为 12 个字符。如果未定义,将显示 name 键的截断版本。
{
"short_name": "short name"
}
3.32 side_panel

标识要在 sidePanel 中显示的 HTML 文件。

{
  "name": "My side panel extension",
  "side_panel": {
    "default_path": "sidepanel.html"
  }
}
3.33 storage

声明托管存储区域的 JSON 架构。

{
  "name": "My enterprise extension",
  "storage": {
    "managed_schema": "schema.json"
  },
}
3.34 tts_engine

将扩展程序注册为文字转语音引擎。

{
  "name": "My TTS Engine",
  "version": "1.0",
  "permissions": ["ttsEngine"],
  "tts_engine": {
    "voices": [
      {
        "voice_name": "Alice",
        "lang": "en-US",
        "event_types": ["start", "marker", "end"]
      },
      {
        "voice_name": "Pat",
        "lang": "en-US",
        "event_types": ["end"]
      }
    ]
  },
  "background": {
    "page": "background.html",
    "persistent": false
  }
}
3.35 update_url
  • 一个字符串,其中包含扩展程序的更新页面的网址。
  • 如果是在 Chrome 应用商店之外托管扩展程序,需要添加此字段。
{
"name": "My extension",
"update_url": "https://myhost. com/mytestextension/updates.xml",
}
3.36 version_name
  • 一个描述扩展程序版本的字符串。例如 1.0 beta 和 build rc2
  • 如果未指定,则改为在扩展程序管理页面上显示 version 值。
{
"version_name": "1.0 beta"
}
3.37 web_accessible_resources

定义扩展程序中可供网页或其他扩展程序访问的文件。

{
  "web_accessible_resources": [
    {
      "resources": [ "test1.png", "test2.png" ],
      "matches": [ "https://web-accessible-resources-1.glitch.me/*" ]
    }, {
      "resources": [ "test3.png", "test4.png" ],
      "matches": [ "https://web-accessible-resources-2.glitch.me/*" ],
      "use_dynamic_url": true
    }
  ],
}

4.ChromeOS 可选的 Key

4.1 file_browser_handlers

提供对 fileBrowserHandler API 的访问权限,该 API 允许扩展程序访问 ChromeOS 文件浏览器。

{
"name": "My extension",
"file_browser_handlers": [
  {
    "id": "upload",
    "default_title": "Save to Gallery", // What the button will display
    "file_filters": [
      "filesystem:*.jpg",  // To match all files, use "filesystem:*.*"
      "filesystem:*.jpeg",
      "filesystem:*.png"
    ]
  }
],
"permissions" : [
  "fileBrowserHandler"
],
}
4.2 file_handlers

指定 ChromeOS 扩展程序要处理的文件类型。

"file_handlers": [
  {
    "action": "/open_text.html",
    "name": "Plain text",
    "accept": {
      "text/plain": [".txt"]
    }
    "launch_type": "single-client"
  }
]
4.3 file_system_provider_capabilities

允许访问 fileSystemProvider API,以便扩展程序创建 ChromeOS 可以使用的文件系统。

{
"name": "My extension",
"permissions": [
  "fileSystemProvider"
],
"file_system_provider_capabilities": {
  "configurable": true,
  "watchable": false,
  "multiple_mounts": true,
  "source": "network"
},
}
4.4 input_components

允许使用 Input Method Editor API

{
  "input_components": [{
    "name": "ToUpperIME",
    "id": "ToUpperIME",
    "language": "en",
    "layouts": ["us::eng"]
  }]
}
标签:Chrome插件