火狐浏览器插件webextensions开发发送ajax请求案例
1.建好这样的一个目录结构,其中icons存放的是插件的图标,borderify.js是代码部分,install.rdf是安装文件,manifest.json是配置文件。
2.在icons下放入一张图片
3.在manifest.json中写入如下代码
{
"manifest_version": 2,
"name": "Borderify",
"version": "1.0",
"description": "Adds a red border to all 127.0.0.1",
"icons": {
"48": "icons/border-48.png"
},
"content_scripts": [
{
"matches": ["*://*/*"],
"js": ["borderify.js"]
}
],
"permissions": ["tabs", "activeTab", "webRequest", "webRequestBlocking", "<all_urls>"]
}
其中,前三个是必须要有的,icons指向icons目录下的文件名,content_scripts中matches是匹配哪些网站会被插件拦截,js指向插件的代码逻辑。permissions是这个插件被赋予的权限,比如说http请求的权限等,<all_urls>说明插件对所有链接释放这些权限。
4.borderify.js插件的代码逻辑
我们先在本地开启一台nginx,并配置监听8888的端口,通过nginx的access.log来观察插件是否真的向nginx发送了ajax请求
setInterval(function() {
var req = new XMLHttpRequest();
req.open("GET", "http://127.0.0.1:8888", true);
req.addEventListener("load", function() {
console.log(req.response);
});
req.send(null);
}
},2000);
5.将插件放入火狐浏览器中进行调试,在浏览器地址栏输入about:debugging即可
点击临时载入附加组件
选中那个js文件即可
现在在浏览器中新建一个窗口就可以进行测试了,如果自己想新添一些功能的话,就直接修改js文件,保存后点击重新载入即可。
6.插件的打包
打包之前,要写入安装文件install.rdf
这是一个通用的安装文件,里面有很多必须属性和可选属性,可以去参考webextensions的开发手册
<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>{Themes_UUID}</em:id>
<em:version>Themes_Version</em:version>
<!-- Target Application this extension can install into,
with minimum and maximum supported versions. -->
<em:targetApplication>
<Description>
<!-- Firefox's UUID -->
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>Min_FF_Version</em:minVersion>
<em:maxVersion>Max_FF_Version</em:maxVersion>
</Description>
</em:targetApplication>
<!-- Front End MetaData -->
<!-- My_Theme -->
<em:name>My_Theme</em:name>
<em:description>My_Theme</em:description>
<em:creator>Your_Name</em:creator>
<em:contributor>Contributors_Names</em:contributor>
<em:homepageURL>Themes_HomePage</em:homepageURL>
<em:updateURL> Url_of_Update_Location </em:updateURL>
<em:aboutURL> Url_of_About_Page </em:aboutURL>
<!-- Front End Integration Hooks (used by Theme Manager)-->
<em:internalName>My_Theme</em:internalName>
</Description>
</RDF>
打包之前,还要在manifest.json文件中写入插件的id,id写你们自己的,这个不能重复
"applications": {
"gecko": {
"id": "[email protected]"
}
},
打包有两种方式,第一种方式是通过zip打包
将这些文件全选打包,记住,是将所有文件打包,而不是将父级目录打包,也就是说,压缩包下面就直接看到这些文件。
第二种就是web-ext build的命令打包
首先先安装node.js然后在执行npm install --global web-ext 来安装web-ext,然后在输入打包命令web-ext build进行打包
7.打包之后的插件仍然不能安装,需要发布才行
https://addons.mozilla.org/zh-CN/developers/addon/01321c50e98849e4a244/submit/finish
在这里面将打包好的插件发布签名,会生成一个插件安装包,就可以安装了