现在的位置: 首页 > 综合 > 正文

Mozilla Add-ons学习笔记(1)

2018年05月18日 ⁄ 综合 ⁄ 共 2773字 ⁄ 字号 评论关闭

Mozilla和Firefox

Firefox是Mozilla基金会最主要的一个浏览器项目。Mozilla最早也有一款Mozilla浏览器,从2004年11月开始才发布Firefox1.0。

XUL

XUL是Mozilla独有的用于开发Mozilla扩展程序的技术,可以和JavaScript、CSS、XBL、XPCOM等技术配合使用,构建所谓的“XUL应用”。

Gecko

Gecko是一个Web渲染引擎,被用于firefox等浏览器,详细的firefox与Gecko的版本对应关系见:https://developer.mozilla.org/en/Gecko

XULRunner

firefox和其他的很多Mozilla应用一样可以分为两个部分:UI和XULRunner(一个common platform)。XULRunner包含了Gecko引擎、Necko networking library和一些其他的组件用于提供操作系统无关的文件管理、访问和定位。这样一个common platform使得Mozilla和firefox项目快速地成长。XULRunner的主页:https://developer.mozilla.org/en/XULRunner

什么是firefox Extension?
Extension是向诸如firefox、thunderbird之类的Mozilla应用中添加功能的小应用程序。extension有别于add-ons。add-ons包含extension,但也包含主题、语言包、plugins等。主题和语言包的开发类似于extension,但是pulgin的开发则完全不同,详见:https://developer.mozilla.org/en/Plugins
现在的Extention有三种不同的形式:add-on sdk extensions(jetpacks)、bootstrapped extensions、traditional extensions。add-on sdk可以让初学者快速地开发extension。而bootstrapped extensions则比traditional extensions更加高级。
一个extension的安装程序是一个XPI文件,这是一个跨平台的安装包,可以在任何的firefox所支持的平台上使用。XPI文件其实是一个ZIP压缩文件,包含以下内容:

chrome.manifest
install.rdf
content
--browserOverlay.xul
--browserOverlay.js
skin
--browserOverlay.css
locale
--en-US
----browserOverlay.dtd
----browserOverlay.properties

install.rdf文件

<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:em="http://www.mozilla.org/2004/em-rdf#">
  <Description about="urn:mozilla:install-manifest">
    <em:id>helloworld@xulschool.com</em:id>
    <em:name>XUL School Hello World</em:name>
    <em:description>Welcome to XUL School!</em:description>
    <em:version>0.1</em:version>
    <em:creator>Appcoast</em:creator>
    <em:homepageURL>https://developer.mozilla.org/en/XUL_School</em:homepageURL>
    <em:type>2</em:type>
    <!-- Mozilla Firefox -->
    <em:targetApplication>
      <Description>
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
        <em:minVersion>4.0</em:minVersion>
        <em:maxVersion>10.*</em:maxVersion>
      </Description>
    </em:targetApplication>
  </Description>
</RDF>

其中,<em:id>helloworld@xulschool.com</em:id>是extension的唯一标识,用于区别于其他的extension,有email-like和uuid两种选择。<em:name>XUL School Hello World</em:name>等是对extension的可见的描述信息。<em:type>2</em:type>表示这是一个extension。<em:targetApplication>描述了extension所适合的浏览器版本,这里的描述不能有任何错误。在所有的mozilla应用中都对该文件有严格的要求。
chrome.manifest文件
Chrome是指窗口文本区域之外的UI元素,如菜单、工具栏、进度条、状态栏、标题栏等,也是出了页面内容外,用户能看到的一切。一个Chrome至少包含:content、skin、locale三部分。其中content是最重要的,包含了XUL和JS的代码。skin中包含了一些图片文件和CSS代码,用于修饰UI的外观。locale中包含了extension中的文本内容,用properties文件和dtd文件保存。
chrome.manifest文件的内容如下:

content   xulschoolhello              content/
skin      xulschoolhello  classic/1.0 skin/
locale    xulschoolhello  en-US       locale/en-US/

overlay chrome://browser/content/browser.xul  chrome://xulschoolhello/content/browserOverlay.xul
每行的第一个单词指定描述的对象,第二个单词指定包,skin和locale的第三个属性指定其所扩展的对象。最后一个属性指定对应代码所在的目录。skin也可以指定除unix-like系统以外的操作系统,如:
skin      xulschoolhello  classic/1.0 skin/mac/ os=Darwin
最后,文件中指定了XUL文件的URL,用的是firefox所支持的chrome协议。

抱歉!评论已关闭.