Chrome 扩展开发概览
1. Chrome 扩展的结构组成
- Chrome扩展的文件结构
- extension-smaple/
- manifest.json
- service-worker.js
- scripts/
- content-script.js
- popup/
- popup.css
- popup.js
- popup.html
- options/
- options.css
- options.js
- options.html
- icons/
- 16.png
- 32.png
- 48.png
- 128.png
- manifest 文件 (manifest.json)
manifest.json 是Chrome扩展的配置文件,它是必须要有的,并且必须位于项目的根目录中。它为浏览器
扩展提供了重要的基础信息,包括:
1. 扩展名,功能描述,当前版本号以及要使用的图标。
2. 扩展所需的Chrome API以及权限配置
3. 为扩展指定的相关文件,例如servicer worker, content script, popup HTML 以及options HTML。
-
扩展服务工作者 (service-worker.js)
扩展服务工作者是浏览器在后台运行的基于事件的脚本。它通常用于处理数据,协调扩展程序不同部分的任务,
以及作为扩展程序的事件管理器。Service Worker 可以访问所有扩展API,但它不能使用文档的全局window对象
提供的DOM API,它在自己的环境中运行,因此不能直接修改网页内容。 -
内容脚本 (content-scripts.js)
扩展使用内容脚本将代码注入主机页面。主机页面是内容脚本与之交互的网站。扩展可以通过指定匹配模式来
选择内容脚本应该在哪些网站上运行。
内容脚本允许扩展程序与浏览器中的页面进行交互和修改。例如它们可以在页面中插入新元素,
更改网站样式,修改DOM元素等。
内容脚本与主机页面共享对同一DOM树的访问,但在单独的javascript环境中运行。它们还可以访问有限数量
的Chrome API。 -
扩展HTML 页面
根据设计扩展可以有不同的HTML页面,所有扩展HTML文件都可以使用Chrome API,但不能包含内联javascript,
它必须指向一个javascript文件,最常见的HTML页面是:
1. 弹出页 (popup.html)
许多扩展使用弹出窗口来提供功能,用户可以通过单击扩展工具栏图标轻松找到它。当用户离开时,它
会自动关闭。
2. 选项页 (options.html)
选项页为用户提供了一种自定义扩展的方法,例如选择扩展将在哪些站点上运行。
其他扩展HTML页面包括Chrome覆盖页面,沙盒页面或为特定目的而包含的任何自定义页面。
2. Chrome 扩展各组件协同工作
-
传递信息
很多时候,内容脚本或其他扩展页面需要从扩展服务工作者发送和接受信息。在这些情况下,任何一方都可以
侦听另一端发送的消息,并在同一通道作出响应。扩展可以发送一次性请求或建立长期连接以支持多条消息。 -
存储数据
Chrome 为扩展提供了专门的存储API,可以用于所有扩展组件。它包括四个用于特定用例的独立存储区域和
一个在数据更新时进行跟踪的事件侦听器。例如当你在弹出窗口中保存更改时,扩展服务工作者可以使用指定
的逻辑进行响应。 -
引用扩展资源
扩展HTML页面可以使用与常规HTML页面相同的标签来添加扩展资源,内容脚本也可以访问扩展资源,例如图像
字体等,但需要额外的步骤。
原文地址:https://www.cnblogs.com/xiaodi-js/p/17077058.html
- Microsoft training Kits
- C#与yaml解析
- WordPress中的jQuery库不起作用的相关问题
- 人工智能时代家长不必做“虎妈”
- WCF 消息帧格式
- C#以post方式调用struts rest-plugin service的问题
- Web前端开发初级阶段需要学习的知识有哪些?
- 作为TensorFlow的底层语言,你会用C+构建深度神经网络吗?
- 企业应用中使用Silverlight 3
- oracle:db-link使用
- 5个炫酷的Python工具,你都用过么?
- 保护ASP.NET 应用免受 CSRF 攻击
- .NET:Entity Framework 笔记
- redis 学习笔记(1)-编译、启动、停止
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Subsequence - 187. Repeated DNA Sequences
- Subsequence - 392. Is Subsequence
- parentheses - 241. Different Ways to Add Parentheses
- parentheses - 32. Longest Valid Parentheses
- parentheses - 22. Generate Parentheses
- palindrome - 132. Palindrome Partitioning II
- palindrome - 131. Palindrome Partitioning
- Parentheses - 20. Valid Parentheses
- Palindrome - 9. Palindrome Number
- Palindrome - 5. Longest Palindromic Substring
- Palindrome - 125. Valid Palindrome
- Sliding Window - 395. Longest Substring with At Least K Repeating Characters
- Sliding Window - 340. Longest Substring with At Most K Distinct Characters
- Sliding Window - 3. Longest Substring Without Repeating Characters
- Sliding Window - 30. Substring with Concatenation of All Words