Chrome 扩展机制
据说,今年9月份开始,谷歌将在Chrome浏览器中全面禁用NPAPI插件,Chrome 45以后将无法再加载NPAPI插件,并推出了一种新的机制:扩展。
其实,如果把浏览器看作一块画布的话,NPAPI插件就像挂在画布上的各种小饰品,而扩展更像拼接在画布外小拼图。无论是插件还是扩展,都是为了让这副画更符合用户的期望。下面就只准备简单介绍一下扩展和Native Message机制。
扩展安装包
一个完整的扩展包,最终会一个.crx的压缩文件包存在,使用zip的解压文件可以直接打开的。
扩展安装,共有两种方式:
1)在Google APP Store中,找到相关的扩展,直接点击添加
2)在Chrome浏览器的地址栏中,输入chrome://extensions,打开扩展管理页面;
再将crx文件,直接拖进去就好了。
如果扩展无法与浏览器搭上线,那么扩展就真的一个块恰好放在浏览器边上的一块小拼图了。
扩展与浏览器间的通信,可以有两种形式:
1)短连接
发送消息:chrome.runtime.sendMessage
接收事件:chrome.runtime.onMessage.addListener
2)长连接
发送消息:var port = chrome.runtime.connect
port.postMessage
接收事件:port.onMessage.addListener
在某些时候,只通过扩展无法达到我们预期的效果,这个时候就需要引入Host端。从浏览器看下来,就是:浏览器<----->扩展<------>Host端。就是说:浏览器与扩展可以相互通信,扩展与Host端可以相互通信,但是Host端与浏览器无法直接通信。Chrome的示例给出的Demo,也是这样的一个结构。
扩展与Host端的通信,就需要遵从Native Message机制的。为了实现Native Message机制通信,需要提前做些准备:
1)Host端、扩展
2)Host端的JSON文件,在这个文件中定义了Host应用的名称,并为其绑定了扩展ID。只有在这里绑定过的,才是合法的,才是可以进行通信。
3)Host端的JSON文件,既然这么重要,那么浏览器要怎么样才能找到这个文件呢?
Windows平台下,是写在了注册表中;Mac下则是放在了指定目录下。
Windows平台:HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.my_company.my_application或
HKEY_CURRENT_USER\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.my_company.my_application
Mac平台:/Library/Google/Chrome/NativeMessagingHosts/com.my_company.my_application.json 或
~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.my_company.my_application.json
Native Message机制的通信方式,也有两种形式:
1)短连接
发送消息:chrome.runtime.sendNativeMessage
2)常连接
发送消息:var port = chrome.runtime.connectNative
port.postMessage
接收事件:port.onMessage.addListener
port.onDisconnect.addListener
关于Native Message机制,需要注意
1)扩展与Host端的通信,其实理解可以为基于标准输入输出接口的进程通信。在Host端中,必须以二进制流的方式进行读写。
2)从扩展到Host端的,单条消息最大不超过4GB
从Host端到扩展的,单条消息最大不超过1MB
3) 每条消息,都一个4字节的头,用来表示消息的长度。
Google的官方说明:
stdin) and standard output (stdout). The same format is used to send messages in both directions: each message is serialized using JSON, UTF-8 encoded and is preceded with 32-bit message length in native byte order. The maximum size of a single message from the native messaging host is 1 MB, mainly to protect Chrome from misbehaving native applications. The maximum size of the message sent to the native messaging host is 4 GB.参考网址
NPAPI的介绍
https://zh.wikipedia.org/wiki/NPAPI
https://developer.chrome.com/extensions/npapi
某软件给出的扩展安装方式
http://honx.in/i/U7JbRYKo13vu6TsJ
中文文档(比官方更新要慢些)
http://chrome.cenchy.com/index.html
Chrome 扩展机制的更多相关文章
- Chrome扩展开发之二——Chrome扩展中脚本的运行机制和通信方式
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- Chrome 消息传递机制
Chrome插件开发入门(二)——消息传递机制 Blog | Qiushi Chen 2014-03-31 9538 阅读 Chrome 插件 由于插件的js运行环境有区别,所以消息传递机制是一个重要 ...
- Chrome扩展开发(Gmail附件管理助手)系列之〇——概述
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- Chrome扩展开发之一——Chrome扩展的文件结构
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- Chrome扩展开发之三——Chrome扩展中的数据本地存储和下载
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- Chrome扩展开发之四——核心功能的实现思路
目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...
- Postman 是一个非常棒的Chrome扩展,提供功能强大的API & HTTP 请求调试
Postman 是一个非常棒的Chrome扩展,提供功能强大的API & HTTP 请求调试 需要FQ才能安装,使用时应该不用FQ了,除非使用postman的历史记录功能: 非常棒的C ...
- Chrome浏览器扩展开发系列之八:Chrome扩展的数据存储
Google Chrome浏览器扩展可以使用如下任何一种存储机制: HTML5的localStorage API实现的本地存储(此处略) Google的chrome.storage.* API实现的浏 ...
- 【前端工具】Chrome 扩展程序的开发与发布 -- 手把手教你开发扩展程序
关于 chrome 扩展的文章,很久之前也写过一篇.清除页面广告?身为前端,自己做一款简易的chrome扩展吧. 本篇文章重在分享一些制作扩展的过程中比较重要的知识及难点. 什么是 chrome 扩展 ...
随机推荐
- SQLite的基本使用
SQLite 创建表 SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表.创建基本表,涉及到命名表.定义列及每一列的数据类型. 语法 CREATE TABLE 语句的基 ...
- 让DIV中文字换行显示
1. <style> div { white-space:normal; word-break:break-all; word-wrap:break-word; } </style& ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(43)-工作流设计-字段分类设计
系列目录 建立好42节的表之后,每个字段英文表示都是有意义的说明.先建立,就知道表的关系和用处了,当然,我的设计只是一个参考,你可能有很多改进的地方. 我们的工作流具体细节流程是这样的: 最终我们的模 ...
- Ubuntu 14.04 下安装wiznote客户端
由于使用wiz官方的方法编译出的客户端无法输入中文,而用apt-get安装的wiz版本又太老, 所以我找到了2.3.2.4版本的wiznote, 用着还可以(支持代码高亮),下面是对应的deb包的链接 ...
- SQL Server索引视图以(物化视图)及索引视图与查询重写
本位出处:http://www.cnblogs.com/wy123/p/6041122.html 经常听Oracle的同学说起来物化视图,物化视图的作用之一就是可以实现查询重写,听起来有一种高大上的感 ...
- Java进击C#——应用开发之Asp.net
本章简言 上一章中笔者讲到关于Linq和EF的用法.并以hibernate来进行讲解.那么本章笔者来讲一下C#的Asp.Net.即是在B/S模式下开发.现在企业大部分的业务都是面向B/S模式的.所以对 ...
- 分享:使用 TypeScript 编写的 JavaScript 游戏代码
<上篇博客>我写出了我一直期望的 JavaScript 大型程序的开发模式,以及 TS(TypeScript) 的一些优势.博客完成之后,我又花了一天时间试用 TS,用它来重构之前编写的一 ...
- 导出数据到Excel --使用ExcelReport有感
先看图,这是几个月前用NPOI写的导出数据到Excel,用了上百行代码,而且难控制,导出来也比较难看 excel打开的效果 下面是我用ExcelReport类库导出到Excel的操作 1.首先引用Ex ...
- svn+teamcity+YouTrack+Upsource搭建—写给明天工作室的小伙伴
首先解释下概念: SVN:Subversion的简称,版本控制系统.采用集中式管理(本地只保留服务器仓储的副本,想要把代码交到服务器或者看提交记录.差异对比就必须得有网络连接) Teamcity:可持 ...
- 《连载 | 物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时支持串口和网络通讯。附:将来支持Windows 10 IOT
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...