如何制作Firefox扩充套件
如果有任何问题,可以上 讨论区 讨论,这个文件如果不够详细,也欢迎各位帮忙补齐。
撰写扩充套件需要了解的技术
编辑- 不会别玩之绝对基础区
- HTML
- JavaScript
- XML: XUL, RDF (这个不会可以用改的...)
- 会了更好之薪水加值区
- CSS
- XPCOM (可以用以联结程式,补强 JavaScript 做不到的事情)
扩充套件档案格式
编辑扩充套件使用 XPI 档来安装。Firefox 可以直接读取这个档案,然后以 Extension Manager 安装扩充套件。xpi 其实就是一个 zip 格式的压缩档,你可以用解 zip 格式的解压缩程式解压缩。如果你还没有适当软体,推廌使用 7-zip,这是一套自由软体,同时也支援 zip 格式。
档案架构
编辑xpi 解开之后的内容范例如下:
install.rdf chrome/extension.jar <- 這是壓縮檔哦!! components/extension.xpt components/extension.js defaults/extension.properties defaults/preferences/extension.js
- install.rdf: 必备,描述档案安装资讯。
- chrome 目录: 必备目录,存放主程式。
- extension.jar: 通常 chrome 里都会放 .jar 压缩档,内含主程式的 XUL、JavaScript、locale、skin 等档案,容后详述。
- components 目录: 可有可无,放置有关 XPCOM 的档案。
- defaults 目录: 可有可无,放置套件相关偏好设定的档案。
extension.jar
编辑当然不是一定得叫做“extension.jar”,总之是个 .jar 格式的档案。这也是压缩档,里头包含扩充套件的主要程式,解开后内容范例如下:
content/套件名稱/extension.xul content/套件名稱/extension.js locale/套件名稱/extension.dtd skin/套件名稱/extension.css
- content 目录: 存放扩充套件主程式,包含 xul、javascript 等档案。
- locale 目录: 存放语系档,依照语言名称各辟子目录 (如 locale/zh-TW 就是正体中文的)
- skin 目录: 存放布景主题等外观元素。
并非每个扩充套件里都会有 .jar 档,所以你打开 chrome 目录后也可能看到某个子目录、里面直接就放著这些档案。
install.rdf
编辑这个档案是一定要有的,因为 Firefox 会先抓这个档案,来确认那些档案要放到那里,你会看到有的扩充套件的 xpi 解开后,主目录下会有 install.js ,那是给 mozilla 看的。
撰写流程建议
编辑假设你已经有想法,也经过系统分析/设计流程后,以下是我们建议撰写步骤。
- 先把会用到的目录建立好。通常主程式都放在 content 目录下、css 档和图档放在 skin 下、语系档则放在 locale 下。当然一开始写的时候全部丢 content 也不要紧,只是记得良好架构应该如上述配置。
- 撰写 .xul,描述程式界面。
- 撰写 .js,描述程式主功能。
- (选用) 将 .xul 及 .js 中的字串抽出,放在 locale 目录下引用。
- (选用) 将 .xul 中的样式抽出以 .css 表现,放在 skin 目录下引用。
- 撰写 install.rdf 档。
- (选用) 为扩充套件加签,证明其合法身分
- 包装为 XPI
最极端的扩充套件甚至可能仅用一个 XUL 档解决,所以怎么抽出 .js、语系档、.css 就看你的决定。
辅助发展工具
编辑- DOM Inspector。Firefox 内建好玩意,有观察 XUL 架构等功能,可少去很多摸索时间。
- Venkman: 这是一套 javascript 专用的 debuger
- Extension Dev: 专门用来发展 extension 的工具,而且是用 Extension Manager 来安装,装好后就有很多好用的工具可以用,尤其是撰写 XUL 界面时。
相关资源
编辑- 官方文件,特色是又臭又长不过连概念都会讲给你听
- 民间文件,各有特色
- XUL Planet XUL 经典学习站,有些资讯已经过时不过仍然很有用处。也包括 JavaScript 的参考资料。XUL Tutorial 中文版翻译中,欢迎帮忙。
- MozillaZine Knowledge Base: Extension development 非常详尽的“资料搜集”站,他们可是最大宗的 Mozilla 社群之一
- Creating Applications with Mozilla 可以免费线上阅读的书籍,亦有实体版。内容针对 Mozilla 所以有些已经过时,不过还是非常有用。