Chrome扩展及应用开发
Chrome扩展及应用开发(电子书)
http://www.ituring.com.cn/minibook/950
文档
官方
https://developer.chrome.com/extensions/contentSecurityPolicy
百度翻译
https://chajian.baidu.com/developer/apps/contentSecurityPolicy.html
https://chajian.baidu.com/developer/extensions/getstarted.html
extension
分为后台脚本,网页内容脚本,地址栏弹出页面和一个配置页面。
都需要在manifest.json里面定义。
内容脚本
插入到每个打开的页面,能获取该页面的DOM,监听事件,触发事件
但不能获得页面的js对象和变量等
一些行为收到限制,可以用的:(注意接发消息的两个)
- extension(getURL、inIncognitoContext、lastError)
- runtime(connect、getManifest、getURL、id、onConnect、onMessage、sendMessage)
- storage
内容脚本是可以选择性插入的,在manifest.json permission 里面用 正则表示
多框架网页,"all_frames":true, 可以插入页面的每个iframe
其他页面想给内容脚本发消息,必须通过 tabs ,而内容脚本使用 runtime.onMessage 接受信息
后台脚本/事件脚本
可以通过调用 runtime.getBackgroundPage 获得。
事件页面可能会被关闭,收到消息时再激活:
定期任务请使用 alarms api,
装载事件 runtime.onInstalled
卸载事件 runtime.onSuspend
消息传递
https://chajian.baidu.com/developer/extensions/messaging.html
chrome.runtime.sendMessage
单个消息。如果向您自己的应用发送消息,每个网页中都会产生 runtime.onMessage 事件;
如果发送至另一个应用则产生 runtime.onMessageExternal 事件。
注意,应用不能使用该方法向内容脚本发送消息。要向内容脚本发送消息,请使用 tabs.sendMessage。
alarms | 使用 chrome.alarms API 安排代码周期性地运行或者在将来的指定时间运行。 |
browserAction | 使用浏览器按钮可以在百度浏览器主窗口地址栏右侧的工具栏中添加图标。除了图标,浏览器按钮还可以有工具提示、徽章和弹出内容。 |
commands | 使用命令 API 添加快捷键,以便触发应用中的操作,例如打开浏览器按钮或向应用发送命令。 |
contextMenus | 使用 chrome.contextMenus API 向百度浏览器的右键菜单添加项目。您可以选择您在右键菜单中添加的项目应用于哪些类型的对象,例如图片、超链接和页面。 |
cookies | 使用 chrome.cookies API 查询和修改 Cookie,并在 Cookie 更改时得到通知。 |
extension | chrome.extension API 包含任何应用页面都能使用的实用方法。它包括在应用和内容脚本之间或者两个应用之间交换消息的支持,消息传递中详细描述了这些内容。 |
i18n | 使用 chrome.i18n 架构为您的整个应用或应用实现国际化支持。 |
idle | 使用 chrome.idle API 检测计算机空闲状态的更改。 |
management | chrome.management API 可以用来管理已经安装并且正在运行的应用或应用。 |
notifications | 使用 chrome.notifications API 通过模板创建丰富通知,并在系统托盘中向用户显示这些通知。 |
pageAction | 使用 chrome.pageAction API 在地址栏中添加图标。页面按钮代表用于当前网页的操作,但是不适用于所有网页。 |
pageCapture | 使用 chrome.pageCapture API 将标签页保存为 MHTML。 |
permissions | 使用 chrome.permissions API 在运行时而不是安装时请求声明的可选权限,这样用户可以理解为什么需要这些权限,并且仅在必要时授予这些权限。 |
power | 使用 chrome.power API 修改系统的电源管理特性。 |
proxy | 使用 chrome.proxy API 管理百度浏览器的代理服务器设置。该模块依赖于类型 API 中的 ChromeSetting 原型,用于获取和设置代理服务器配置。 |
runtime | 使用 chrome.runtime API 获取后台网页、返回清单文件详情、监听并响应应用或应用生命周期内的事件,您还可以使用该 API 将相对路径的 URL 转换为完全限定的 URL。 |
storage | 使用 chrome.storage API 存储、获取用户数据,追踪用户数据的更改。 |
system.cpu | 使用 chrome.system.cpu API 查询 CPU 元数据。 |
system.memory | 使用 chrome.system.memory API 获取内存信息。 |
system.storage | 使用 chrome.system.storage API 查询存储设备信息,并在连接或移除可移动存储设备时得到通知。 |
system.display | 使用 chrome.system.display API 查询显示器的元数据。 |
tabs | 使用 chrome.tabs API 与浏览器标签页交互。您可以使用该 API 创建、修改或重新排列浏览器中的标签页。 |
tts | 使用 chrome.tts API 播放合成的文字语音转换(TTS),同时请您参见相关的 ttsEngine API,允许应用实现语音引擎。 |
ttsEngine | 使用 chrome.ttsEngine API 在应用中实现文字语音转换(TTS)引擎。如果您的应用注册了该 API,当任何应用或百度浏览器应用使用 tts 模块朗读时,它会收到事件,包含要朗读的内容以及其他参数。您的应用可以使用任何可用的网络技术合成并输出语音,并向调用方发送事件报告状态。 |
webNavigation | 使用 chrome.webNavigation API 实时地接收有关导航请求状态的通知。 |
webRequest | 使用 chrome.webRequest API 监控与分析流量,还可以实时地拦截、阻止或修改请求。 |
windows | 使用 chrome.windows API 与浏览器窗口交互。您可以使用该模块创建、修改和重新排列浏览器中的窗口。 |