`
mabusyao
  • 浏览: 253375 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Firefox 扩展开发 —— 1

阅读更多
作为当下最流行的浏览器之一,firefox不仅提供了可靠的日常功能及安全的信息访问,同时它还为开发人员提供了方便的接口,使得开发人员对于firefox的扩展变得更为容易。

因为目前正在项目的间歇期,而下一个项目可能会涉及到firefox的扩展开发,于是我便打算利用这段空闲时间,好好学习一下。

首先需要弄清楚两个概念: Extension和Plugin。

单从字面上讲,Extension表意扩展,而plugin则是插件的意思。Plugins are different from extensions, which modify or enhance the functionality of the browser itself. 在我的理解是,Extension是对firefox功能上的拓展,通过Extension,我们可以向firefox用户提供新的功能,或者是不同于以往的浏览器体验。Plugin则是为了改变或是改善浏览器已有的功能,是对firefox自身的一种改变或者说提高。

而对于我来说,所要关注的就是Extension的开发了。

首先当然还是从hello world 开始。Mozilla的开发中心提供了一个可以注册下载的Extension Wizard,其中包含了一个简单的extension包,我们可以以此为开发基础。下图是extension包中的文件结构:
<ext path>\
          install.rdf
          chrome.manifest
          chrome\
             content\

先不去看Mozilla的介绍文档,我们先大致看下这些文件里面都有什么内容。首先是install.rdf:
<?xml version="1.0" encoding="UTF-8"?>
<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>huang@yao</em:id>
    <em:name>huang</em:name>
    <em:version>1.0</em:version>
    <em:creator>yao</em:creator>
    <em:description>My first extension</em:description>
    <em:targetApplication>
      <Description>
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> <!-- firefox -->
        <em:minVersion>1.5</em:minVersion>
        <em:maxVersion>3.0.*</em:maxVersion>
      </Description>
    </em:targetApplication>
  </Description>
</RDF>

从名字上我们可以猜测这个文件是用来提供安装信息给firefox的,里面的内容也证实了这个推断。

<em:id>huang@yao</em:id>,是这个扩展包的ID,用来唯一标志我们当前创建的扩展包。 格式上要求是email格式,但不必是真实的邮件地址。

<em:type>2</em:type>,扩展包的类型,可能有多种类型,但在这里,我们一般设置为2即可。

<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>, 该irefox的应用程序ID,关于这一点,我还没能在Mozilla的网站上找到更详细的介绍,以后会细化这部分。

<em:minVersion>1.5</em:minVersion>,扩展包所能支持的firefox最低版本号。

<em:maxVersion>3.0.*</em:maxVersion>, 相应的,扩展包所能支持的最高版本号。

在https://developer.mozilla.org/en/Install_Manifests 中有着完整的属性列表。


再看第二个文件,chrome.manifest。从名字上我们可以认为,这个文件是用来提供安装和打包时所需资源的一个集合。以下是其中的代码:
content	huang	content/
locale	huang	en-US	locale/en-US/
skin	huang	classic/1.0	skin/
overlay	chrome://browser/content/browser.xul	chrome://huang/content/firefoxOverlay.xul

content huang content/, 这行很好理解,这个扩展包里的content在content/相对地址huang的文件夹中。
相应的locale en-US的相关文件在locale/en-US/中。
皮肤文件skin/中。
最后一行有点奇怪,overlay,字面上的意思是覆盖,那么是用第二个参数来覆盖第一个参数? chrome这个协议名又是怎么回事?后一个文件或许还可以理解为当前content文件夹下的firefoxOverlay.xul文件,那前一个文件是哪里的呢? xul又是什么类型的文件? 带着这些问题,我们继续看下去。

XUL

Firefox的扩展包是用XUL和javascript来写的,XUL是一种基于xml文件格式的,用于提供用户界面及控件的语言。结合js相应用户行为的能力,两者便形成了extension的核心内容。

为了扩展浏览器,我们需要通过增加或是删除控件的方式来修改浏览器的UI。而正如刚才所说的,有两种办法来修改浏览器的UI,一是通过添加XUL 的DOM空间,另一个是通过JS来处理事件。

而我们刚才所提到的chrome://browser/content/browser.xul这样一个xul文件就是Firefox浏览器自己默认的UI形式。我们可以在这个文件夹下找到它:
$FIREFOX_INSTALL_DIR/chrome/browser.jar contains content/browser/browser.xul

打开这个文件,我们可以看到其实它就是一个XML格式的,最外层是是个window的节点,里面包含了许多attributes以及子节点。我们来看看它都有哪些子节点:

script: 类似于HTML中的定义,script节点用来引入其他脚本或脚本文件。注意,这里的代码源都是以chrome开头的,现在我们只知道chrome是一种类协议名,但还不清楚它究竟是做什么用的
<script type="..." src="chrome://..."/>

stringbundleset: stringbundle容器,包含一个或多个stringbundle, 用来为为XUL文件提供字符串常量。
<stringbundleset id="stringbundleset"> 
   <stringbundle id="bundle_brand" src="chrome://..."/>
 </stringbundleset>

commandset: command容器,包含一个或多个command, 为整个window提供时间处理中心。
<commandset id="mainCommandSet">
    <command id="cmd_newNavigator" oncommand="OpenBrowserWindow()"/>
  </commandset>

broadcasterset:broadcaster的容器, 当你想要多个元素共享属性值,或者响应某个状态改变时,就会用到broadcaster。任何订阅了同一个broadcast的元素,都可以访问其中的属性,或是当状态发生变化时接收来是broadcaster的通知,并进行相应的操作。
 <broadcasterset id="mainBroadcasterSet">
    <broadcaster id="viewBookmarksSidebar" autoCheck="false" label="&bookmarksButton.label;"
                 type="checkbox" group="sidebar" sidebarurl="chrome://browser/content/bookmarks/bookmarksPanel.xul"
                 oncommand="toggleSidebar('viewBookmarksSidebar');"/>
</broadcasterset>


剩下的那些节点都是跟用户界面有关的了,将在以后的篇章里进行介绍。
分享到:
评论

相关推荐

    我的Firefox插件开发之旅——从零开始

    以上内容详细阐述了作者在开发Firefox扩展过程中的学习路线图,从零开始探索扩展开发的必备知识,包括对扩展与插件的区别、XUL的介绍和应用,以及如何准备和规划自己的学习路径。通过分享这些内容,作者希望为其他...

    [翻译]Firefox OS开发入门——第一个app

    在Firefox OS中,开发者可以利用WebAPIs和Web Activities来扩展应用程序的功能。WebAPIs是一组JavaScript接口,使应用能够访问设备的各种功能,如通讯录、短信服务或硬件控制。例如,通过WebAPI,应用可以调用设备的...

    firefox插件开发教程

    本教程旨在深入探讨Firefox插件开发的核心——XUL(XML User Interface Language)及其在图形用户界面(GUI)设计中的应用。 XUL是一种专为Firefox设计的接口语言,它基于XML语法,为创建和修改浏览器内的图形元素...

    火狐的淘宝插件FIREFOX——WW

    "火狐的淘宝插件FIREFOX——WW"就是针对这一需求开发的,旨在为火狐用户提供便捷的淘宝旺旺(WANGWANG)集成服务。 该插件的主要功能是将淘宝旺旺的聊天功能无缝嵌入到火狐浏览器中,使用户无需离开网页就能直接与...

    Firefox 插件开发指南

    ### Firefox 插件开发指南知识点概述 #### 一、开发概览 ...总之,Firefox 扩展开发是一项既富有挑战性又极具创意的工作。通过学习本教程和探索更多资源,您将能够掌握开发高质量扩展所需的知识和技能。

    Firefox火狐浏览器官方52.5.0esr-win32版本exe安装包

    Firefox火狐浏览器,由Mozilla基金会开发,是一款开源、免费的网络浏览器,以其强大的安全性、隐私保护和高度可定制性著称。本篇文章将深入探讨Firefox 52.5.0esr-win32版本的特性、安装过程以及与Windows 32位操作...

    firefox附加组件开发者指南

    ### Firefox附加组件开发者指南 #### 第一章:扩展简介 ##### 概述 当你开始阅读这份**Firefox附加组件开发者指南**时,表明你已经是一名Fire...通过实际操作,你将能够更好地理解和掌握Firefox扩展开发的全过程。

    Firefox火狐浏览器官方60.9.0esr-mac版本dmg安装包

    标题提及的是“Firefox火狐浏览器官方60.9.0esr-mac版本dmg安装包”,这意味着我们讨论的是针对Mac OS系统的Firefox的一个特定稳定版本——60.9.0esr。 ESR(Extended Support Release)是Firefox为那些需要更长期...

    Firefox火狐浏览器官方3.5 RC 1-win32版本exe安装包

    标题中的“Firefox火狐浏览器官方3.5 RC 1-win32版本exe安装包”指的是Mozilla Firefox浏览器的一个特定版本——3.5 Release Candidate (RC) 1,该版本是为Windows 32位操作系统设计的可执行安装程序。在软件开发中...

    火狐浏览器51版——64bit.rar

    7. **同步功能**:通过Firefox Sync,用户可以在不同的设备间同步书签、历史记录、密码和打开的标签页,确保无缝的浏览体验。 8. **无障碍支持**:火狐浏览器注重无障碍性,支持屏幕阅读器和其他辅助技术,使有特殊...

    Firefox火狐浏览器官方78.5.0esr-win32版本exe安装包

    Firefox火狐浏览器,由Mozilla基金会开发,是一款开源、免费的网络浏览器,以其强大的安全性、隐私保护和高度可定制性著称。78.5.0esr(Extended Support Release)版本是针对企业用户特别设计的,它提供了更长期的...

    Firefox和Chrome的扩展程序可以为任何网址添加评论

    这里主要涉及的是两种主流浏览器——Firefox(火狐)和Chrome(谷歌浏览器),以及它们支持的Web扩展机制,允许开发者创建自定义功能,如在网页上添加评论功能。这种扩展通常通过JavaScript实现,因为JavaScript是...

    Firefox火狐浏览器官方49.0b9-win32版本exe安装包

    《Firefox火狐浏览器49.0b9-win32版本:深入解析与使用指南》 Firefox,这款由Mozilla基金会开发的开源网络浏览器,以其强大的安全性能、高度的可定制性和丰富的扩展插件深受全球用户的喜爱。本文将针对"Firefox...

    Firefox火狐浏览器官方84.0.1-win32版本exe安装包

    《Firefox火狐浏览器84.0.1-win32版本详解》 Firefox火狐浏览器,全称为Mozilla Firefox,是一款由Mozilla基金会开发的开源网络浏览器。它以其强大的安全性能、高度的定制性和对Web标准的优秀支持,深受全球用户的...

    火狐浏览器安装 httprequester 教程

    2. 在“附加组件”窗口中,选择“扩展”选项卡,然后点击右下角的“获取更多扩展”按钮,这将打开Firefox的官方扩展市场——AMO(Add-ons Manager)。 3. 在AMO的搜索框中输入“HttpRequester”,按下回车进行搜索。...

    Firefox火狐浏览器官方78.3.1esr-win32版本exe安装包

    Firefox火狐浏览器,由Mozilla基金会开发,是一款开源、免费的网络浏览器,以其强大的安全性、隐私保护和高度可定制性著称。本资源是Firefox的78.3.1esr-win32版本,特别为Windows 32位操作系统设计。"esr"代表...

    Firefox(火狐浏览器)

    总的来说,Firefox火狐浏览器凭借其强大的安全特性、个性化定制选项、优秀的性能表现和对用户隐私的关注,成为了许多用户首选的网络浏览器。通过不断的更新和完善,Firefox始终致力于提供一个安全、快速且个性化的...

    Firefox Portable 17

    用户可以通过Firefox的官方扩展市场——AMO(Add-ons Manager Online)下载和管理这些扩展,轻松定制自己的浏览器界面和功能。 在性能方面,Firefox 17引入了一些优化,比如更快的页面加载速度和更好的JavaScript...

    Firefox_78.0.1.rar

    Firefox是一款由Mozilla公司开发的开源网络浏览器,以其开源、自由、可扩展性以及对隐私的重视而广受欢迎。 描述中提到的“Python selenium 的WEBdriver组件”,是指用于自动化测试Web应用程序的工具——Selenium ...

    Firefox火狐浏览器官方78.6.0esr-mac版本pkg安装包

    火狐浏览器(Firefox)是Mozilla公司开发的一款开源、免费的网络浏览器,以其强大的安全性、隐私保护和可定制性而受到全球用户的广泛欢迎。在提供的压缩包文件“Firefox 78.6.0esr.pkg”中,我们获取的是Firefox的一...

Global site tag (gtag.js) - Google Analytics