Firefox开发
- 官方文档 First extension
- 目录结构
➜ firefox tree
.
└── borderify
└── manifest.json // 必须
directory, filesmanifest.json
内容{
"manifest_version": , // 必须
"name": "Borderify", // 必须
"version": "1.0", // 必须
"description": "Adds a red border to all webpages matching mozilla.org.",
"content_scripts": [
{
"matches": ["*://*.mozilla.org/*"], // 匹配url,<all_urls> 匹配所有
"js": ["content-script.js"] // 本地创建一个 content-script.js用来编写js代码实现插件功能
}
] // 加载matches所匹配的url时,会加载所给定的js脚本
}- 使用
WebExtension APIs
调用某些API需要声明权限,需要在manifest.json里面使用permission关键字请求跨域权限
这样content script才能很好的使用WebExtension APIs
- 使用
后台脚本
- 在
manifest.json
里面添加background关键字 "background": {
"scripts": ["background.js"]
}- ############################
Content Scripts 不能直接使用大部分WebExtension APIs,
但是可以通过信息messaging APIs与扩展后台脚本通信,
这样间接地调用所有的后台脚本能够调用的APIs例子: 监听点击事件,点击后发送地址给后台脚本
- 目录结构
➜ firefox tree
.
└── borderify
├── background.js
├── content-script.js
└── manifest.json
directory, files manifest.json
{
"manifest_version": ,
"name": "Borderify",
"version": "1.0",
"description": "My Firefox Plugin Study",
"icons": {
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content-script.js"]
}
],
"permissions": [
"webRequest",
"notifications", // 如果要使用notification api 就必须要加这个
"<all_urls>" // 允许所有的url
],
"background": {
"scripts": ["background.js"]
}
}- content-script.js
window.addEventListener("click", notifyExtension); // 给每个对象绑定click事件
console.log("content-sciprt.js start");
function notifyExtension(e)
{
console.log(e.target.tagName);
if(e.target.tagName != "A") // 判断tagname是否是link标签(a标签)
{
return ;
}
console.log(e.target.href+"sadsd");
broswer.runtime.sendMessage({"url": e.target.href}); // 发送消息到后台
}
console.log("content-sciprt.js end");background.js
console.log("background.js start"):
browser.runtime.onMessage.addListener(notify); // 设置消息监听
function notify(message)
{
browser.notifications.create({
"type": "basic",
"title": "you click a link",
"message": message.url + 'sdsd'
});
}
console.log("background.js end");browser.notifications.create文档
- 运行测试
进入about:debugging
后添加临时扩展测试
- 运行测试
- 目录结构
Firefox开发的更多相关文章
- Firefox上Web开发工具库一览
Firefox的目标之一就是尽可能地使web开发者的生活更简单高效,并通过提供工具和具有很强扩展性的浏览器使人们创造出神奇的东西.使web开发者使用Firefox的时候,浏览器可以提供大量开发工具和选 ...
- 前端教程&开发模块化/规范化/工程化/优化&工具/调试&值得关注的博客/Git&面试-资源汇总
内容精简 资源这么多,多看看多学习再总结肯定是好的.多读读就算看重了不算浪费时间,毕竟一千个读者就有一千个林黛玉,还有温故而知新,说不定多读一些内容,就发现惊喜了呢.不过,在此也精简一些内容,就1~2 ...
- firefox native extension -- har export trigger
这两天想学习下如何在运行自动化脚本时去capture http traffic,google看到一篇博客介绍用browser mob proxy或者firefox+firebug+netexport, ...
- javascript错误处理与调试(转)
JavaScript 在错误处理调试上一直是它的软肋,如果脚本出错,给出的提示经常也让人摸不着头脑. ECMAScript 第 3 版为了解决这个问题引入了 try...catch 和 throw 语 ...
- 最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!【转载+整理】
原文地址 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和for-of循环 生成器 Generators 模板字符串 不定参数和默认参数 解构 Destructu ...
- Sublime Text 最佳插件列表(转)
Package Control 安装方法 首先通过快捷键 ctrl+` 或者 View > Show Console 打开控制台,然后粘贴相应的 Python 安装代码. Sublime Tex ...
- 推荐!Sublime Text 最佳插件列表
本文由 伯乐在线 - 艾凌风 翻译,黄利民 校稿.英文出处:ipestov.com.欢迎加入翻译组. 本文收录了作者辛苦收集的Sublime Text最佳插件,很全. 最佳的Sublime Text ...
- 深入浅出ES6(六):解构 Destructuring
作者 Jason Orendorff github主页 https://github.com/jorendorff 什么是解构赋值? 解构赋值允许你使用类似数组或对象字面量的语法将数组和对象的属性 ...
- Sublime Text各种插件使用方法
有快捷键冲突的时候可以修改快捷键,建议修改插件快捷键而不是Sublime Text的快捷键,我的有冲突的一律将插件快捷键设置成:Ctrl+Alt+A(B...) Package Control 通俗易 ...
随机推荐
- HTML data-* 自定义属性
HTML data-* 自定义属性 data-*是HTML5新添加的全局属性,通过它我们可以自定义属性,就像id,class等属性一样.我们可以使用JavaScript来操作这些属性. <div ...
- 【题解】洛谷P1080 [NOIP2012TG] 国王游戏(贪心+高精度)
次元传送门::洛谷P1080 思路 我们模拟一下只有两个大臣的时候发现 当a1∗b1<a2∗b2是ans1<ans2 所以我们对所有大臣关于左右手之积进行排序 得到最多钱的大臣就是 ...
- vue中监听页面滚动和监听某元素滚动
①监听页面滚动 在生命周期mounted中进行监听滚动: mounted () { window.addEventListener('scroll', this.scrollToTop) }, 在方法 ...
- SharePoint2013代码操作权限组的几个Demo
1,清明节闲来无聊,敲代码吧,不知道敲什么,不敲吧,又好像比较颓废,不思进取.遂把以前项目中别的同事负责的权限模块的代码看一看,做俩个Demo. (1)代码创建组 protected void Cre ...
- DBA手记-BBED 的说明
在10g中连接生成bbed:cd $ORACLE_HOME/rdbms/libmake -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed 11g中缺省未提供BBE ...
- redis 安装 配置 及启动
linux下安装redis及其中遇到的问题的解决方法1.将下载好的压缩包放到/usr/local目录下# tar xzf redis-3.0.2.tar.gz# cd redis-3.0.2# mak ...
- 微信小程序——长按复制、一键复制
wxml: 订单号:<text selectable='true' bindlongtap='copy' >{{OrderModel.OrderNo}}</text><b ...
- jqu
1 /*2 * 说明:3 * 本源代码的中文注释乃Auscarlin呕心沥血所作.旨在促进jQuery的传播以及向广大jQuery爱好者提供一个进阶4 *的途径,以让各位更加深入地了解jQuery,学 ...
- linux中配置JDK环境变量
使用的centos版本为 7.5 首先我们要把jdk拷到linux中,这里我们借助XShell工具,我们先来看看Xshell的用法 打开Xshell 后点击文件,“新建“,如下图: 起一个名称,主机填 ...
- 前端框架---jQuery---一分钟下载使用
这里通过自己手动的方式“做”一个jQuery来使用,需要5步 1. 访问 https://jquery.com 2. 点击download 3. 拉到最下方,点击 JQuery CDN 4. 得到所有 ...