本文没涉及如何写一个扩展,而是简单整理一下扩展涉及到的周边的东西。

环境

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扩展初接触相关推荐

  1. Firefox 扩展开发 install.rdf和chrome.manifest

    现在我们以一个hello world扩展为例来说明Firefox 扩展的基本运行方式.先下载 Hello World extension,解压缩,下面假定路径是c:\helloworld. 设置fir ...

  2. Firefox扩展开发 Hello World!

    今天尝试开发一个Firefox的扩展.虽然比较简单,网上也有很多教程,但是感觉一些教程写的比较麻烦,在初步的开发过程中并没有用到那些东西,于是自己把开发过程记录下来.我是根据Mozilla官方教程开发 ...

  3. firefox扩展开发(二):用XUL创建窗口控件

    firefox扩展开发(二):用XUL创建窗口控件 2008-06-11 16:57 1.创建一个简单的窗口 <?xml version="1.0"?> <?xm ...

  4. firefox扩展开发(四) : 更多的窗口控件

    firefox扩展开发(四) : 更多的窗口控件 2008-06-11 17:00 标签盒子 标签盒子是啥?大家都见过,就是分页标签: 对应的代码: <?xml version="1. ...

  5. firefox 扩展_如何检查您的扩展程序是否将停止与Firefox 57一起使用

    firefox 扩展 With Firefox 57, scheduled for release in November 14, 2017, Mozilla will end support for ...

  6. Dapr微服务应用开发系列2:Hello World与SDK初接触

    题记:上篇介绍了Dapr的环境配置,这次我们来动手尝试一下Dapr应用的开发 Hello World Dapr应用的Hello World其实和其他的Hello World一样简单: 首先用你喜欢的语 ...

  7. sysadmin默认密码_Sysadmin指南,开源电子邮件客户端,macOS应用程序,SELinux,Firefox扩展等...

    sysadmin默认密码 上周读者的最爱包括针对系统管理员,Linux游戏,工具综述等的文章. Archit Modi撰写的网络管理系统管理员指南 您更喜欢哪个电子邮件客户端? ,由Opensourc ...

  8. linux ansible_17本技术书籍,4个出色的Firefox扩展,Linux技巧,Buildah,Ansible和其他热门阅读

    linux ansible 上周,与Linux相关的文章在我们的前十名中占据了主导地位,但是到目前为止,我们针对Linux和开源爱好者的17本书的综述是我们最大的成功. 请继续阅读,以了解上周Open ...

  9. firefox扩展开发(八) :控件激活

    firefox扩展开发(八) :控件激活 2008-06-11 17:01 当我们用鼠标点击一个控件,或者用TAB键移动到一个控件上时,我们说这个控件被激活 了(focus),离开这个控件时,我们说这 ...

最新文章

  1. 20个开源项目助你快速掌握区块链应用开发,JS Go PHP Python Ruby
  2. 军营中重重打击之后,我变了一个人(下)--我成为程序员所经历的(四)
  3. converter 迁移xen server 上的虚拟机 到 wmware esxi
  4. 第七章 oracle的服务启动顺序、认证方式、
  5. Java AOP学习之method invoke of class JdkDynamicAopProxy
  6. Nginx基本数据结构之ngx_hash_t
  7. 简要说明php数组的类型,php数组的概述及分类与声明代码演示
  8. 基于Matlab的自适应低通滤波器设计,课程设计-低通滤波器设计(含matlab程序)
  9. 根据年、月、周、日设置时间节点的日期工具类
  10. 浏览器内核学习笔记一
  11. 方差分析 交互效应和无交互效应
  12. ae合成设置快捷键_解决AE提示错误预览需要2个或多个帧才能播放问题
  13. 求最小公倍数的几种方法
  14. 爬取豆瓣电影排行榜top 250
  15. java 域账户登录失败_域用户登陆,错误:无法登录到你的账户,通常可以通过从你的账户注销,然后重新登录来解决此问题...
  16. 中金环境携手海通安恒,启动SAP二期项目
  17. 点与直线位置关系,叉乘
  18. Android获取手机信号强度
  19. hbuilder在服务器端打开网页,HBuilderX配置tomcat外部服务器查看编辑jsp界面的方法详解...
  20. 元祖python_Python-数据类型-元祖

热门文章

  1. 互联网校招简历这样写,找工作才好找哦!
  2. 香港岭南大学开通CnOpenData试用
  3. 双指针之两数之和,三数之和,N数之和系列
  4. 云计算统一办公运营平台服务能力设计方案
  5. 《GhostXP_SP2电脑公司特别版_8.0》
  6. ECCV2022 | 基于整合IMU运动动力学的无监督单目深度估计
  7. 团购三巨头承诺“誓言”:诚意够足,效率如何?
  8. 老王课程学习,第八课
  9. ffmpeg开发之旅(4):MP3编码格式分析与lame库编译封装
  10. 基于微信小程序视频点播系统 视频点播小程序毕业设计 毕业论文 开题报告和效果图参考