Chinaunix首页 | 论坛 | 博客
  • 博客访问: 438848
  • 博文数量: 161
  • 博客积分: 5005
  • 博客等级: 上校
  • 技术积分: 1090
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-20 16:38
文章分类

全部博文(161)

文章存档

2011年(21)

2010年(33)

2009年(89)

2008年(18)

我的朋友

分类:

2009-06-24 19:56:00

   在前一篇文章中跟大家分享了怎么使用spket在eclipse中开发Firefox扩展,但是存在的一个缺点是默认的chrome.manifest文 件中对content,skin,locale提供的地址都是相关jar包的,这样需要方便我们生成xpi安装文件,但是作为开发人员,我们往往需要对扩 展进行多次修改与调试再最后生成安装文件,这时可以用以下的方法来实现Firefox扩展的动态开发,当我们修改扩展源文件时,被修改结果立即被反应在浏 览器上。

1.首先我们需要对chrome.manifest文件做一个比较透彻的认识:

   chrome.manifest中常用的有以下几种元素:content,skin,locale,overlay

   他们的格式如下:

   content 包名 content文件夹中内容相对chrome.manifest文件的位置/     (注意,最后这个"/"不能省略)

   skin       包名   皮肤名   skin文件夹中内容相对chrome.manifest文件的位置/

   locale    包名   语言名    locale文件夹中内容相对chrome.manifest文件的位置/

 

 

   注意这三个文件都与存放相应内容的文件夹的位置有关,当相应文件夹改变是,他们也要跟着改变

 

   overlay chrome://被覆盖的overlay的URI地址   chrome://overlay的URI地址

 

    与上面三个元素不丗,overlay无文件夹的位置无关,它总能通过这个抽象的chrome://找到overlay在什么地方,css与js文件也使用chrome://来指定。

 

2.当使用spket创建一个firefox extension project 后的目标结构如下(取项目名为myextension,下面使用的包名也为myextension):

 

   myextension

        |+content

        |+defaults

        |+locale

        |+skin

        |-.project

        |-build.xml

        |-chrome.manifest

        |-install.rdf

 

 

  则如果想进行进行动态开发的话,我们需要将chrome.manifest中自动生成的用jar方式表示的语句去掉,修改后的chrome.manifest的内容大致如下:

 

C代码
  1. content myextension content/  
  2. locale    myextension   en-US       locale/en-US/  
  3. skin          myextension   classic/1.0 skin/  
  4. overlay chrome://browser/content/browser.xul chrome://myextension/content/myextension.xul  
 

   然后我们需要创建一个指针文件,指向这个项目,文件名称与此扩展的ID相同,类似myextension@XXX.com,将此文件放入自己的firefox的profiles 文件夹下的extensions 文件夹中,这个文件夹的位置一般是:

C:\Documents and Settings\YOURACCONUTNAME\Application Data\Mozilla\Firefox\Profiles\XXX(此处名称不唯一)\extensions,这个指针文件的内容就是你的项目的绝对 地址.

 

3.现在打开Firefox,在没有安装扩展的情况下,这个扩展已经在浏览器中了,这时我们在eclipse中修改源文件内容后,只需在 Firefox中使用Reload all Chrome命令就可以后到修改后的扩展效果(Reload all chrome 是Fireofx扩展 Extension Developer 的一个命令,需要首先安装这个扩展)。

 

 

4.当扩展功能全部完成且调试通过时,我们就需要将它打包成XPI文件了,这个时候只需要简单修改一下chrome.manifest文件就可以了,修改后的效果如下:

 

 

C代码
  1. content myextension  jar:chrome/myextension.jar!/content/  
  2. locale    myextension en-US jar:chrome/myextension.jar!/locale/en-US/  
  3. skin    myextension classic/1.0 jar:chrome/myextension.jar!/skin/  
  4. overlay chrome://browser/content/browser.xul chrome://myextension/content/fedsearchbar.xul  

 

  通过与上面对比,我们看到只有content,locale,skin这三具部分做了修改,而overlay没有作修改,相应的源文件内部css,js引用元素也不用作修改。

  另外注意,这个地方修改chrome.manifest文件并不是告诉机器去哪里找content,locale等文件,使用ant builder时spket会自动找到他们的,这个地方这样修改chrome.manifest文件是因为它将会被包含在myextension.xpi 文件中,所以需要将他修改成在myextension.xpi文件中相应的形式。

 

5.注意的地方:

   a.在动态开发过程中修改了chrome.manifest文件,刚被修改的效果不能通过Reload all chromes命令立即表现出来,因为chrome.manifest只在浏览器启动时被解析,所以需要重新启动浏览器才可以。

   b.在动态开发过程中修改了install.rdf(这种情况比较少),这时要修改指针文件(pointer file)指向的文件夹的修改时间才可以!在Windows下可以通过在此文件夹中创建一个新的文件夹再删除的方式来达到这个效果。

 

   至此,整个Firefox扩展开发周期结束

阅读(997) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~