Firefox扩展初接触
本文没涉及如何写一个扩展,而是简单整理一下扩展涉及到的周边的东西。
环境
Profile配置文件的默认位置:
Windows |
%APPDATA%\Mozilla\ |
Unix/Linux |
~/.mozilla |
为了不影响正常Firefox的使用,用来测试插件或扩展应该使用不同的Profile配置
使用新的Profile文件
通过
firefox -no-remote -P testplugin
可以启动让firefox使用名为testplugin的Profile配置,如果这个配置尚不存在,则会弹出对话框,我们可以点击创建。此时可以自己定义名字和选择目录
-no-remote的含义是开启一个新的实例(进程?),而不是在当前的实例中新开一个窗口。具体参数信息可以通过
firefox --help
获得。
现在 ~/.mozilla/firefox下有以下内容:
4bn7669x.default/ av24yatw.testplugin/ Crash Reports/ profiles.ini
修改Firefox配置
在地址栏输入about:config,修改以下参数的值
javascript.options.showInConsole = true |
将chrome文件中的错误显示在Console里。 |
nglayout.debug.disable_xul_cache = true |
关闭XUL缓存,这允许不重启而改变窗口以及对话的内容。 |
browser.dom.window.dump.enabled = true |
这将允许dump()函数输出到stdout里。 |
javascript.options.strict = true |
启用严格JavaScript错误提示。 |
extensions.logging.enabled = true |
这将给出更多关于安装以及更新插件的信息。 |
某些项可能不存在,可以在页面点击右键,添加。
也可以直接修改Profile文件夹下的prefs.js文件
- ~/.mozilla/firefox/av24yatw.testplugin/prefs.js
user_pref("nglayout.debug.disable_xul_cache",true); user_pref("browser.dom.window.dump.enabled",true);
如果这个文件不存在,可以直接创建。
扩展的位置
假定我们已经有了一个扩展(文件夹或者.xpi文件),那么放到哪儿才能被firefox找到呢?
位置一
- Windows
%APPDATA%\Mozilla\Extensions\{ec8030f7-c20a-464f-9b0e-13a3a9e97384}\
- liunx
/usr/lib/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-3a3a9e97384}/ ~/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/
位置二
针对某个特定的Profile配置:
- Windows
%APPDATA%\Mozilla\Firefox\4bn7669x.default\Extensions\
- Linux
~/.mozilla/firefox/4bn7669x.default/extensions/
位置三
Firefox安装目录下的
distribution/extensions/
子目录
如何放置?
位置有了,如果扩展该如何放置呢?命名有无要求?
每一个扩展都有一个install.rdf文件,该文件内有一个该扩展的ID(是一个uuid或者email地址)
<em:id>helloworld@mozilla.doslash.org</em:id>
1. 如果我们将扩展的文件夹直接放置到前面提到的位置。那么文件夹名需要和该ID完全一致
helloworld@mozilla.doslash.org
2. 可以将该扩展其打包成.zip文件(后缀改为.xpi,标准的扩展安装文件?),放置到前面提及的位置
helloworld@mozilla.doslash.org.xpi
3. 我们可以将插件随便放置到一个其他位置,然后在前述位置下放置一个文本文件
helloworld@mozilla.doslash.org
其内容为我们插件所在的具体文件夹的路径。
第三种方法和前面的位置二应该是编写扩展时最常用的。
扩展的结构
├─install.rdf ├─chrome.manifest ├─content/ ├─skin/ └─locale/
- install.rdf
对扩展来说,这是最重要的一个文件。它指定了扩展的名字,ID,版本等等信息
- chrome.manifest
这个文件也是必须的,它告诉Firefox该扩展提供了哪些内容。这部分东西通常会打包成一个jar文件(也是一个普通的.zip文件)
- content/ skin/ locale/ ...
这些不是必须的,但大部分扩展都是这么组织内容的:
content |
包含该扩展的UI和逻辑 |
skin |
CSS 和一些图片(其他人可以提供新的皮肤) |
locale |
locale相关的文件,比如翻译等 (其他人可以提供翻译) |
chrome
如前所述,chrome有3部分组成
- chrome.manifest
content helloworld content/ locale helloworld en-US locale/en-US/ skin helloworld classic/1.0 skin/
访问这些文件时,通过chrome协议
chrome://packagename/section/path/to/file
比如:chrome://helloworld/content/overlay.xul
参考
https://developer.mozilla.org/en/Building_an_Extension
https://developer.mozilla.org/en/XUL_School/The_Essentials_of_an_Extension
http://yp.oss.org.cn/software/show_resource.php?resource_id=21
Firefox扩展初接触相关推荐
- Firefox 扩展开发 install.rdf和chrome.manifest
现在我们以一个hello world扩展为例来说明Firefox 扩展的基本运行方式.先下载 Hello World extension,解压缩,下面假定路径是c:\helloworld. 设置fir ...
- Firefox扩展开发 Hello World!
今天尝试开发一个Firefox的扩展.虽然比较简单,网上也有很多教程,但是感觉一些教程写的比较麻烦,在初步的开发过程中并没有用到那些东西,于是自己把开发过程记录下来.我是根据Mozilla官方教程开发 ...
- firefox扩展开发(二):用XUL创建窗口控件
firefox扩展开发(二):用XUL创建窗口控件 2008-06-11 16:57 1.创建一个简单的窗口 <?xml version="1.0"?> <?xm ...
- firefox扩展开发(四) : 更多的窗口控件
firefox扩展开发(四) : 更多的窗口控件 2008-06-11 17:00 标签盒子 标签盒子是啥?大家都见过,就是分页标签: 对应的代码: <?xml version="1. ...
- firefox 扩展_如何检查您的扩展程序是否将停止与Firefox 57一起使用
firefox 扩展 With Firefox 57, scheduled for release in November 14, 2017, Mozilla will end support for ...
- Dapr微服务应用开发系列2:Hello World与SDK初接触
题记:上篇介绍了Dapr的环境配置,这次我们来动手尝试一下Dapr应用的开发 Hello World Dapr应用的Hello World其实和其他的Hello World一样简单: 首先用你喜欢的语 ...
- sysadmin默认密码_Sysadmin指南,开源电子邮件客户端,macOS应用程序,SELinux,Firefox扩展等...
sysadmin默认密码 上周读者的最爱包括针对系统管理员,Linux游戏,工具综述等的文章. Archit Modi撰写的网络管理系统管理员指南 您更喜欢哪个电子邮件客户端? ,由Opensourc ...
- linux ansible_17本技术书籍,4个出色的Firefox扩展,Linux技巧,Buildah,Ansible和其他热门阅读
linux ansible 上周,与Linux相关的文章在我们的前十名中占据了主导地位,但是到目前为止,我们针对Linux和开源爱好者的17本书的综述是我们最大的成功. 请继续阅读,以了解上周Open ...
- firefox扩展开发(八) :控件激活
firefox扩展开发(八) :控件激活 2008-06-11 17:01 当我们用鼠标点击一个控件,或者用TAB键移动到一个控件上时,我们说这个控件被激活 了(focus),离开这个控件时,我们说这 ...
最新文章
- 20个开源项目助你快速掌握区块链应用开发,JS Go PHP Python Ruby
- 军营中重重打击之后,我变了一个人(下)--我成为程序员所经历的(四)
- converter 迁移xen server 上的虚拟机 到 wmware esxi
- 第七章 oracle的服务启动顺序、认证方式、
- Java AOP学习之method invoke of class JdkDynamicAopProxy
- Nginx基本数据结构之ngx_hash_t
- 简要说明php数组的类型,php数组的概述及分类与声明代码演示
- 基于Matlab的自适应低通滤波器设计,课程设计-低通滤波器设计(含matlab程序)
- 根据年、月、周、日设置时间节点的日期工具类
- 浏览器内核学习笔记一
- 方差分析 交互效应和无交互效应
- ae合成设置快捷键_解决AE提示错误预览需要2个或多个帧才能播放问题
- 求最小公倍数的几种方法
- 爬取豆瓣电影排行榜top 250
- java 域账户登录失败_域用户登陆,错误:无法登录到你的账户,通常可以通过从你的账户注销,然后重新登录来解决此问题...
- 中金环境携手海通安恒,启动SAP二期项目
- 点与直线位置关系,叉乘
- Android获取手机信号强度
- hbuilder在服务器端打开网页,HBuilderX配置tomcat外部服务器查看编辑jsp界面的方法详解...
- 元祖python_Python-数据类型-元祖
热门文章
- 互联网校招简历这样写,找工作才好找哦!
- 香港岭南大学开通CnOpenData试用
- 双指针之两数之和,三数之和,N数之和系列
- 云计算统一办公运营平台服务能力设计方案
- 《GhostXP_SP2电脑公司特别版_8.0》
- ECCV2022 | 基于整合IMU运动动力学的无监督单目深度估计
- 团购三巨头承诺“誓言”:诚意够足,效率如何?
- 老王课程学习,第八课
- ffmpeg开发之旅(4):MP3编码格式分析与lame库编译封装
- 基于微信小程序视频点播系统 视频点播小程序毕业设计 毕业论文 开题报告和效果图参考