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

创建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.mzph.cn/news/701021.shtml

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

相关文章

python3 Flask jwt 简易token认证实例

直接上代码 from flask import Flask, jsonify, request, make_response import jwt import datetime from functools import wrapsapp Flask(__name__)# 这是一个示例密钥,实际应用中应该使用一个复杂且随机的密钥 app.config[SECRET_KEY] your_secret_keydef t…

未来智能的发展走势

未来智能的发展走势可以预见是从人工智能走向人机融合智能,再到人机环境系统智能。这一趋势主要包括以下五个特点: 1、主动推荐 未来智能系统将能够主动根据用户的需求和兴趣,提供个性化的推荐和建议。这种推荐将基于大数据和机器学习算法&am…

第九节HarmonyOS 常用基础组件24-Navigation

1、描述 Navigation组件一般作为Page页面的根容器,通过属性设置来展示的标题栏、工具栏、导航栏等。 2、子组件 可以包含子组件,推荐与NavRouter组件搭配使用。 3、接口 Navigation() 4、属性 名称 参数类型 描述 title string|NavigationComm…

源代码管理——码云Gitee

目录 Git安装 Gitee配置SSH 源代码管理常规操作 1.idea配置git 2.常规操作 Git安装 安装Git是进行源代码管理的基本步骤之一。以下是在本地安装Git的通用步骤,适用于Windows系统: 下载Git安装程序: 访问Git官网的下载页面:Git官网下载地…

【前端素材】推荐优质后台管理系统Welly平台模板(附源码)

一、需求分析 后台管理系统(或称作管理后台、管理系统、后台管理平台)是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成,为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…

现在学Oracle是49年入国军么?

今天周末,不聊技术,聊聊大家说的最多的一个话题 先说明一下,防止挨喷😆 本人并不是职业dba,对数据库就是爱好,偶尔兼职,以下仅个人观点分析,如有不同观点请轻喷,哈哈&…

【动态规划介绍】

文章目录 前言一、动态规划是什么?动态规划的定义动态规划的历史背景动态规划的基本概念最优子结构重叠子问题记忆化 二、动态规划的工作原理1.分解子问题如何分解重叠子问题的重要性 2.存储解决方案存储方法优势 3.构建最终解决方案解决方案的构建 三、动态规划的类…

C语言5道编程题简单介绍

1、水仙花数(Narcissistic number)又被称为阿姆斯特朗数(Armstrong number)。水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身(例如:1^3 5^3 3^3 153)。 输出100…

vue3中的createApp函数

创建一个应用实例。 function createApp(rootComponent: Component, rootProps?: object): App详情信息: 第一个参数是根组件。第二个参数可选,它是要传递给根组件的 props。 我们在vue3中man.ts中常见的写法如下: createApp(App).use(r…

【数据结构和算法初阶(c语言)】数据结构前言,初识数据结构(给你一个选择学习数据结构和算法的理由)

1.何为数据结构 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的 数据元素的集合。本质来讲就是在内存中去管理数据方式比如我们的增删查改。在内存中管理数据的方式有很多种(比如数组结构、链式结构、树型结…

【Java程序员面试专栏 数据结构】六 高频面试算法题:字符串

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊数组,包括数组合并,滑动窗口解决最长无重复子数组问题,图形法解下一个排列问题,以及一些常见的二维矩阵问题,所以放到一篇Blog中集中练习 题目…

openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议

文章目录 openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议 openGauss学习笔记-228 openGauss性能调优-系统调优-LLVM使用建议 目前LLVM在数据库内核侧已默认打开,用户可结合上述的分析进行配置,总体建议如下: 设置合理的wor…

Flink:流上的“确定性”(Determinism)

1. 什么是“确定性” 先明确一下什么叫“确定性”:对于一个“操作”来说,如果每次给它的“输入”不变,操作输出的“结果”也不变,那么这个操作就是“确定性“的。通常,我们认为批处理的操作都是确定的,比如…

Android compose入门demo

Android Compose 是 Android 的一个新 UI 工具包,用于构建原生 Android 应用。它基于 Kotlin 语言,并使用了现代化的声明式 UI 编程模型。Compose 的目标是提供一种更简洁、更灵活的方式来构建 Android UI,同时保持高性能。 下面是一个简单的…

Nginx基本操作

目录 引言 一、Nginx配置文件详解 (一)配置文件 (二)模块 二、全局配置文件 (一)关闭版本或修改版本 1.关闭版本号 2.修改版本信息 (二)修改启动的进程数 (三&…

JavaScript+PHP实现视频文件分片上传

摘要 视频文件分片上传,整体思路是利用JavaScript将文件切片,然后循环调用上传接口 upload.php 将切片上传到服务器。这样将由原来的一个大文件上传变为多个小文件同时上传,节省了上传时间,这就是文件分片上传的其中一个好处。 上…

神经网络系列---回归问题和分类问题

文章目录 回归问题和分类问题回归问题:分类问题:多分类问题:排序问题:自定义损失函数: 回归问题和分类问题 回归问题: 回归问题是一种预测连续数值输出的任务。在这种问题中,模型的目标是根据…

整理ArrayList和LinkedList中的方法

ArrayList 和 LinkedList 是 Java 中两种常用的列表(List)实现。它们提供了许多相同的方法,但由于内部实现的不同,这些方法的性能可能会有所不同。以下是一些常用的方法: 添加元素 add(E e): 在列表的末尾添加一个元…

【黑马程序员】2、TypeScript介绍_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程

课程地址:【黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程】 https://www.bilibili.com/video/BV14Z4y1u7pi/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 2、TypeScript初体验 2.1 安装编译TS的工…

mysql数据库 - 统诉

1、DDL - 数据库操作 show databases; create database 数据库名 use 数据库名 select database() drop database 数据库名 2、DDL- 表操作 show tables; create table desc 表名 show create table 表名 alter table 表名 add/modify/change/rename drop table 表名 3、DML …