`

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

参考


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics