一、什么是插件(Plug-in),什么是扩展(Extension)。
插件指的是在页面HTML源代码里通过<object> 或者 <embed> 标签声明的部分,工作在内核层面的一种扩展技术,与浏览器无关,理论上可以用任何一种生成本地可执行文件的语言开发,比如C/C++、Delphi、VB、VS.Net等等,目前主流的浏览器插件技术主要有以下几种:
- ActiveX,由Microsoft提出,仅Internet Explorer(IE)浏览器支持,微软最新的Edge浏览器不再支持ActiveX技术。
- NPAPI(Netscape Plugin API),由Netscape提出,FireFox、Chrome等非IE浏览器基本都支持该项技术,不过后来因为安全性问题,Chrome从45版本之后放弃了对NPAPI的支持另搞了一套PPAPI技术,FireFox从53版本开始也放弃了对NPAPI的支持,据说Chrome的开源版本Chromium还可以用,不管怎么样这种技术的淘汰只是时间的问题。
- PPAPI(Pepper Plugin API),是 Google 在原有网景 NPAPI基础上搞的,它将插件放到沙盒里运行,所以具有更高的安全性。 目前只有 Chrome 浏览器及基于 Chromium 内核的浏览器支持。
扩展指的是利用浏览器提供的API来扩展浏览器功能的一种组件,工作在浏览器层面,通常使用HTML + Javascript 语言开发,与浏览器相关,与页面的HTML源代码无关。因此插件与扩展实质是两种不同的东西。
好了,废话不多说,下面进入FireFox浏览器扩展开发的详细介绍。
二、manifest.json
首先使用记事本一类的文本编辑器新建一个文本文件,然后在文件中输入以下内容后另存为manifest.json。
{
"description":"Firefox extension demo description",
"name": "Firefox extension demo",
"manifest_version":2,
"version":"1.0",
"icons":{"48": "ICONS/ICON_48.png","64": "ICONS/ICON_64.png"},
"applications":{"gecko":{"id": "demo@demo.com","strict_min_version": "50.0"}},
"background":{"scripts":["background.js"]},
"browser_action":{"default_icon":{"48": "ICONS/ICON_48.png"}},
"permissions":["nativeMessaging"]
}
manifest.json是扩展的配置文件,主要作用是向FireFox浏览器说明扩展的名称、介绍、图标路径、版本、浏览器版本、后台脚本等基本信息。其中:
"name":扩展的名称,必须项。
"manifest_version" :manifest版本,必须项,且目前值必须为2。
"version":当前扩展的版本,必须项。
"icons":图标列表,可选项,它由图像大小(以px为单位)的键值对以及相对于manifest.json文件所在目录的图像路径组