Chrome插件开发(一)—manifest.json文件介绍

news/发布时间2024/5/16 1:29:09

创建Chrome插件的manifest.json文件,这是插件的元数据文件,用于定义插件的基本信息,权限,前台页面(如弹出窗口的HTML),以及其他脚本等。

以下是根据Chrome扩展Manifest V3规范的一个较全面的字段列表:

{"manifest_version": 3,"name": "Extension Name","version": "1.0","default_locale": "en","description": "A description","icons": {"16": "icon16.png","48": "icon48.png","128": "icon128.png"},"action": {"default_popup": "popup.html","default_icon": {"16": "icon16.png","48": "icon48.png","128": "icon128.png"}},"author": "Author Name","automation": "allowed or not","background": {"service_worker": "background.js"},"chrome_settings_overrides": {"homepage": "http://www.homepage.com","search_provider": {"name": "Search Provider Name","keyword": "keyword","search_url": "http://www.searchurl.com?q={searchTerms}","favicon_url": "http://www.faviconurl.com/favicon.ico","suggest_url": "http://www.suggesturl.com?q={searchTerms}","instant_url": "http://www.instanturl.com?&q={searchTerms}","image_url": "http://www.imageurl.com/search?q={searchTerms}&s=image","new_tab_url": "newtab.html"},"startup_pages": ["http://www.startuppage.com"]},"chrome_ui_overrides": {"bookmarks_ui": {"remove_button": true,"remove_bookmark_shortcut": true,"remove_bookmarks_submenu": true}},"chrome_url_overrides": {"newtab": "newtab.html"},"commands": {"takeScreenshot": {"suggested_key": {"default": "Ctrl+Shift+Y","mac": "Command+Shift+Y"},"description": "Take a screenshot"}},"content_scripts": [{"matches": ["http://www.example.com/*"],"css": ["mystyles.css"],"js": ["content_script.js"]}],"content_security_policy": "script-src 'self' https://example.com; object-src 'self'","converted_from_user_script": false,"current_locale": "","declarative_net_request": {"rule_resources": [{"id": "ruleset_1","enabled": true,"path": "rules.json"}]},"devtools_page": "devtools.html","event_rules": [{"event": "runtime.onStartup","actions": [{"type": "declarativeContent.ShowPageAction"}]}],"externally_connectable": {"matches": ["*://*.example.com/*"]},"file_browser_handlers": [{"id": "upload","default_icon": "icon16.png","file_filters": ["filesystem:*.txt"]}],"file_system_provider_capabilities": {"configurable": true,"multiple_mounts": true,"source": "network"},"homepage_url": "http://www.homepage.com","host_permissions": ["*://*.example.com/*"],"import": [{"id": "abcdefghijklmnoabcdefhijklmnoabc","minimum_version": "1.0"}],"incognito": "spanning or split","input_components": [{"name": "IME Component","type": "ime","id": "com.example.ime","description": "A tool to input language.","language": "en","layouts": ["layout1"]}],"key": "publicKey","minimum_chrome_version": "88","nacl_modules": [{"path": "module.nmf","mime_type": "application/x-pnacl"}],"oauth2": {"client_id": "clientid.apps.googleusercontent.com","scopes": ["https://www.googleapis.com/auth/userinfo.email"]},"offline_enabled": true,"omnibox": {"keyword": "keyword"},"optional_permissions": ["tabs"],"options_page": "options.html","options_ui": {"chrome_style": true,"page": "options.html"},"permissions": ["storage"],"platforms": [{"nacl_arch": "x86-32","sub_package_path": "_platform_specific/x86-32/"}],"replacement_web_app": {},"requirements": {"3D": {"features": ["webgl"]}},"sandbox": [{"pages": ["sandbox.html"],"content_security_policy": "sandbox allow-scripts allow-same-origin"}],"short_name": "Short Name","storage": {"managed_schema": "schema.json"},"tts_engine": {"voices": [{"voice_name": "Voice","lang": "en-US","gender": "male","event_types": ["start", "end", "error"]}]},"update_url": "http://www.update_url.com","version_name": "1.0 beta","web_accessible_resources": [{"resources": ["images/*.png"],"matches": ["https://*.example.com/*"]}]
}

上述各个字段的含义如下:

  • manifest_version: 清单文件的版本,必须字段,当前应为3。
  • name: 扩展的名称,必须字段。
  • version: 扩展的版本号,必须字段。
  • default_locale: 如果您的扩展支持多种语言,则需要此字段。
  • description: 对扩展的简单描述。
  • icons: 一个对象,为扩展提供不同尺寸的图标。
  • action: 用来定义浏览器操作栏(浏览器旁边的扩展图标)的行为,例如弹出页面等。
  • author: 扩展的作者名字。
  • automation: 指出扩展是否可以自动化Chrome浏览器的某些操作。
  • background: 定义后台持久性脚本或持久性页面。
  • chrome_settings_overrides: 覆盖Chrome的某些设置,例如主页、搜索提供程序或启动页。
  • chrome_ui_overrides: 覆盖Chrome用户界面的某个部分,比如书签界面。
  • chrome_url_overrides: 覆盖特定的内置页面,比如新标签页。
  • commands: 定义扩展的键盘快捷键。
  • content_scripts: 向特定网页注入脚本的配置。
  • content_security_policy: 定义内容安全策略。
  • converted_from_user_script: 表示扩展是否是从用户脚本转换而来。
  • current_locale: 插件当前的本地化语言。
  • declarative_net_request: 声明性网络请求配置。
  • devtools_page: 为Chrome开发者工具定义一个自定义页面。
  • event_rules: 定义扩展中的事件规则,如果符合某些条件将会触发。
  • externally_connectable: 允许哪些网页与扩展通信。
  • file_browser_handlers: 定义扩展如何处理文件浏览器中的文件。
  • file_system_provider_capabilities: 定义扩展提供的文件系统的能力。
  • homepage_url: 扩展的主页地址。
  • host_permissions: 扩展可以访问的网站。
  • import: 允许在扩展之间共享代码。
  • incognito: 定义扩展在隐身模式下的行为。
  • input_components: 定义输入组件,主要用于输入法扩展。
  • key: 用于更新扩展时验证的公钥。
  • minimum_chrome_version: 扩展需要的最小Chrome版本。
  • nacl_modules: Native Client模块配置。
  • oauth2: OAuth2的配置,如客户端ID和权限范围。
  • offline_enabled: 表示扩展是否可以离线使用。
  • omnibox: 定义扩展如何与地址栏交互。
  • optional_permissions: 用户安装扩展后可以选择性给予扩展的额外权限。
  • options_page: 扩展的选项页面。
  • options_ui: 配置扩展的选项UI。
  • permissions: 扩展所需的权限。
  • platforms: 针对不同的硬件体系结构提供特定信息。
  • replacement_web_app: 如果扩展是为了替代一个现有的Web应用程序。
  • requirements: 扩展所需要的Chrome的某些特殊功能。
  • sandbox: 设置一个或多个网页为沙盒模式,以限制权限。
  • short_name: 扩展的简称。
  • storage: 关于扩展存储的信息。
  • tts_engine: 文字到语音转换引擎配置。
  • update_url: 扩展更新的JSON文件地址。
  • version_name: 一个更具可读性的版本名字。
  • web_accessible_resources: 列出可以被网页访问的扩展资源。

这些字段和选项构成了扩展程序的核心配置,开发者需要可以根据自己扩展的功能来选择需要用到的字段。

以上仅仅是Chrome插件的入门教程,下一节课,我将带领大家实操,敬请期待~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/ITMs/4047.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

线段树学习笔记 下

可持久化线段树 上面两篇是几年前写的,笔者今日才加以整理,如有错误请见谅。 线段树加上版本就是可持久化线段树。 Problem Intro 给定一个数组,只需要单点修改和单点查询,但要维护版本。 具体说,每一次操作可能从…

spring boot3参数校验基本用法

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途。 目录 前置条件 前言 导入依赖 使用介绍 配置检验规则 开启校验 使用注意 全局异常捕获返回友好提示信息 常用的校…

【MySQL】表的操作

目录 1、增加表2、查看表3、修改表4、删除表 1、增加表 语法: CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; 说明: field 表示列名datatype 表示列的类型…

ESP8266智能家居(5)——开发APP深入篇

1.代码解析 接下来重点介绍一下逻辑代码 这里面主要是设置mqtt服务器的IP地址和端口号,设置服务器的用户名和登录密码 绑定好订阅主题和发布主题(和8266上的订阅、发布交叉就行) 绑定界面,设置界面标题 绑定6个文本控件 将从mq…

2.22 Qt day3 多界面跳转+qss登录界面优化+发布软件+对话框

思维导图: 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号…

如何改变.net托管的入口main函数

有小伙伴问: .NET托管入口Main函数可以修改成别的函数,用来作为程序的入口吗? 答案:当然是可以的。这也算是.NET里面非常简单的骚操了。本篇来用最新的.NET8演示下,如何修改Main入口。 1.简单控制台例子: namespace…

C# 中 SQLite 查询数据库表中字段(列)是否存在的方法

查询SQLite数据库表中字段(列)存在的方法 使用SQL语句为:PRAGMA table_info([DeviceTrees]); 其中“DeviceTrees”为数据库表的名称。 使用SQLite Expert Professional工具,查看该语句是否起作用,这里使用的版本是…

线性代数的艺术

推荐一本日本网友Kenji Hiranabe写的《线性代数的艺术》。这本书是基于MIT大牛Gilbert Strang教授的《每个人的线性代数》制作的,通过可视化的、图形化的方式理解和学习线性代数。 全书内容不长,算上封面再带图一共也就12页。书中内容都是图解形式呈现&…

phar反序列化原理及利用

phar是什么? phar 是 PHP 的一种归档文件格式,类似于 ZIP 或 TAR 文件,它可以包含多个文件和目录,并且可以像访问普通文件系统一样在 PHP 中进行访问。在php 5.3 或更高版本中默认开启 在php.ini中配置如下时,才能生成…

QEMU开发入门

1. 简介 QEMU(Quick EMUlator)是一个开源的虚拟化软件,它能够模拟多种硬件平台,并在这些平台上运行各种操作系统。QEMU可以在不同的主机架构之间进行虚拟化,例如x86、ARM、PowerPC、Risc-V等。QEMU是一个功能强大且灵…

Stable Diffusion 绘画入门教程(webui)-图生图

通过之前的文章相信大家对文生图已经不陌生了,那么图生图是干啥的呢? 简单理解就是根据我们给出的图片做为参考进行生成图片。 一、能干啥 这里举两个例子 1、二次元头像 真人转二次元,或者二次元转真人都行, 下图为真人转二次…

LangChain Agent v0.2.0简明教程 (上)

快速入门指南 – LangChain中文网 langchain源码剖析系列课程 九天玩转Langchain! 1. LangChain是什么2. LangChain Expression Language (LCEL)Runnable 接口3. Model I/O3.1 Prompt Templates3.2 Language Model3.3 Output ParsersUse case(Q&A with RAG)1. LangChain…

台式电脑无法进桌面问题

楼主家里的台式电脑有一段时间进不了桌面,一度很困扰。 最开始发现有一个存储盘没有显示,拆开主机盖,把显卡、内存、硬盘都重新往紧压了下。重新开机后,显示器还是黑的。 表现为主机启动的声音正常,显示器没有信号接…

如何用GPT进行成像光谱遥感数据处理?

第一:遥感科学 从摄影侦察到卫星图像 遥感的基本原理 遥感的典型应用 第二:ChatGPT ChatGPT可以做什么? ChatGPT演示使用 ChatGPT的未来 第三:prompt 提示词 Prompt技巧(大几岁) 最好的原则和策…

【 Maven 】花式玩法之多模块项目

目录 一、认识Maven多模块项目 二、maven如何定义项目的发布策略 2.1 版本管理 2.2 构建配置 2.3 部署和发布 2.4 依赖管理 2.5 发布流程 三、使用Jenkins持续集成Maven项目 四、总结 如果你有一个多模块项目,并且想将这些模块发布到不同的仓库或目标位置&…

K8S集群调度

目录 Pod 是 Kubernetes 的基础单元 nodeName noeSelector 修改一个 label 的值 删除一个 label 指定标签查询 node 节点 亲和性 节点亲和性 Pod 亲和性 键值运算关系 硬策略(示例) 软策略(示例) 硬策略和软策略一起使…

性能优化——canvas 加载海量图

背景 公司的在线设计稿平台的画板列表页开发时由于数据量不足,未能测出关于画板列表页性能问题,在经过用户一段时间的使用后出现了关于初始化卡顿、缩放卡顿等问题,画板列表页采用了vue-konva 原因 关于画板列表为何卡顿有如下几点原因 1、…

React18源码: schedule任务调度messageChannel

React调度原理(scheduler) 在React运行时中,调度中心(位于scheduler包)是整个React运行时的中枢(其实是心脏),所以理解了scheduler调度,就基本掌握了React的核心React两大循环:从宏…

抖音数据抓取工具|短视频下载工具|视频内容提取软件

一、开发背景: 随着抖音平台的流行,越来越多的人希望能够下载抖音视频以进行个人收藏或分享。然而,目前在网上找到的抖音视频下载工具功能单一,操作繁琐,无法满足用户的需求。因此,我们决定开发一款功能强大…

(3)llvm ir转换过程

(1)DAG Lowering 输入的IR转换成SelectionDAG的过程被称作lowering 就是把llvm ir转成这种 (2)DAG legalization "DAG legalization"(有向无环图合法化)是编译器后端,特别是在LLVM中…
推荐文章