Google Chrome浏览器扩展的架构
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Google Chrome浏览器扩展的架构,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2446字,纯文字阅读大概需要4分钟。
内容图文
![Google Chrome浏览器扩展的架构](/upload/InfoBanner/zyjiaocheng/1333/128445575b4044e5a0288b9eb7225543.jpg)
1) 不可视的background 页面
Google Chrome 扩展往往包含一个不可见的background 页面,Google Chrome 扩展的主要业务逻辑都位于此。有两种类型的background 页面,一种是 persistent background pages ,另一种是 event pages 。Persistent background pages 持续运行,随时可访问。而Event pages 是事件驱动运行的,只有在事件发生的时候才可以访问。
Persistent background pages默认加载入内存,持续运行在后台。在manifest.json文中注册Persistent background page如下:
{
"background": {
"scripts": [myBackgroundPage.js],
"persistent": true
]
}
Event pages默认是不加载的,只在事件发生时加载并运行。触发加载Event pages的场景如下:
· Google Chrome扩展第一次被安装或升级到新版本
· 发生了Event pages监听的事件
· content script或其他Google Chrome扩展发出了一个message
· Google Chrome扩展中的其他页面调用了chrome.runtime.getBackgroundPage()方法
Google Chrome扩展通过chrome.runtime.onInstalled.addListener(onInit)要求监听onInstalled事件,Chrome浏览器跟踪当前发生的所有事件。一旦被监听的事件发生,Chrome浏览器就会加载Event pages。
如果Google Chrome扩展通过removeListener取消了对某事件的监听,则该事件发生时Chrome浏览器也不会加载Event pages。
当事件不再被监听器引用后卸载以释放内存并发出chrome.runtime.onSuspend事件。
在manifest.json文中注册Event page如下:
{
"background": {
"scripts": [myEventPage.js],
"persistent": false
]
}
2) 可视页面
Google Chrome扩展可以完全运行在后台,也可以为用户提供可视界面。Google Chrome扩展最常用的可视界面为如下两种形式(两者是互斥的):
· browser actions,这样的Google Chrome扩展可以适用于任何页面。图标往往位于浏览器地址栏外右侧。点击图标将弹出窗口。
· page actions,这样的Google Chrome扩展只能作用于某一页面,当打开该页面时触发该Google Chrome扩展,关闭页面则Google Chrome扩展也随之消失。图标往往位于浏览器地址栏内右端。
此外,Google Chrome扩展还支持其他的可视界面:
· context menu,右键菜单
· options 页面,Google Chrome扩展可以有一个options 页面,支持用户定制Chrome扩展的运行参数。
· override页面,Google Chrome扩展中的override页面可以替换浏览器中打开的默认页面,如标签管理器页面chrome://bookmarks、浏览历史记录页面chrome://bookmarks或新建Tab页面chrome://bookmarks。不过,一个Google Chrome扩展只能替换一个默认页面。
· 通过chrome.tabs.create()或window.open()打开的页面
3) Google Chrome 扩展与Web 页面/ 服务器之间的交互
· 通过content scripts,可以实现Google Chrome扩展与用户打开的Web页面之间的交互。
· 通过跨域的 XMLHttpRequest,可以实现Google Chrome扩展与其他服务器之间的交互。
content scripts是一组JavaScript文件,运行在浏览器当前打开的页面的上下文中,可以读取并修改当前打开的页面DOM结构。事实上,content scripts可以被看作是当前打开的页面的组成部分。
4) 使用chrome.* API
Google Chrome扩展除了使用JavaScript的通用标准API之外,还可以使用Chrome浏览器专有的API(称为chrome.* API).
不过,大多数chrome.* API都是异步调用,调用之后立即返回而不等待调用结果,所以对chrome.* API的调用往往都需要一个回调函数作为参数以处理调用结果。
当然,也有少量chrome.* API是同步调用。这样的chrome.* API往往都有一个返回类型,也无需回调函数作为参数。
5) Google Chrome 扩展中的页面之间的数据通信
Google Chrome扩展中的不同页面之间往往要通信,以调用彼此方法共享数据。由于一个Google Chrome扩展中的所有页面都运行于同一个进程中的同一个线程,所以各个页面可以通过一定的方法直接调用。
如通过chrome.extension.getViews()获得所有可视页面的window对象的数组,通过chrome.extension.getBackgroundPage()获得不可视的background页面的window对象。通过页面的window对象就可以对页面的DOM进行任何操作。
原文:http://www.cnblogs.com/champagne/p/4800900.html
内容总结
以上是互联网集市为您收集整理的Google Chrome浏览器扩展的架构全部内容,希望文章能够帮你解决Google Chrome浏览器扩展的架构所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。