firefox扩展插件制作方法详细介绍_应用技巧

首先第一步 说一下怎么样查看firefox插件的源码, 就我上边写的那个东西,把它下载下来.将它的扩展名改为zip并解压。会得到一个blueideaserach的文件夹, 这个文件夹中便是我做的这个插件的源码[attach]62937[/attach]

这个目录中除了 chrome目录  chrome.manifest install.rdf  这三个以外都不是必须的。

chrome.manifest   这个文件中是对所有文件的一个列表.

install.rdf             这个是安装信息的描述.

chrome目录中放的是主程序.  

这个整个目录结构是这样的.

     blueideasearch-----
           --------chrome
                    -----content
                               --overlay.xul
                               --overlay.js
            --------chrome.manifest
            ---------install.rdf

也就是说 只要按这个目录结构建好. 并压缩成zip包 改名为xpi  它便可以在firefox中安装了. 

overlay.xul 文件中是对插件的人UI描述。
overlay.js   是程序的处理部分.
下边这个代码是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>yabaxx@Msn.com</em:id>
    <em:version>1.0</em:version>
    <em:type>2</em:type>

    <!-- Target Application this extension can install into, 
         with minimum and maximum supported versions. --> 
    <em:targetApplication>
      <Description>
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
        <em:minVersion>1.5</em:minVersion>
        <em:maxVersion>2.0.0.*</em:maxVersion>
      </Description>
    </em:targetApplication>

    <!-- Front End MetaData -->
    <em:name>blueidea search</em:name>
    <em:description>blueidea </em:description>
    <em:creator>yaba</em:creator>
    <em:homepageURL>http://bbs.blueidea.com/</em:homepageURL>
    <em:iconURL>chrome://blueideasearch/content/logo.gif</em:iconURL>
    <em:updateURL>http://www.yoursblog.cn/bibar_update.rdf</em:updateURL>
  </Description>      
</RDF>

chrome.manifest文件列表描述内容

复制代码 代码如下:

content     blueideasearch    chrome/content/ 
overlay  chrome://browser/content/browser.xul chrome://blueideasearch/content/overlay.xul

install.rdf中 

复制代码 代码如下:

    <Description> 
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> 
        <em:minVersion>1.5</em:minVersion> 
        <em:maxVersion>2.0.0.*</em:maxVersion> 
      </Description> 

这个em:id是不能变的. 他指明了这个插件的使用对像为 firefox.
em:minVersion 为最低可以安装这个插件的版本 。maxVersion反之. 
 
复制代码 代码如下:

   <em:name>blueidea search</em:name> 
    <em:description>blueidea </em:description> 
    <em:creator>yaba</em:creator> 
    <em:homepageURL>http://bbs.blueidea.com/</em:homepageURL> 
    <em:iconURL>chrome://blueideasearch/content/logo.gif</em:iconURL> 
    <em:updateURL>http://www.yoursblog.cn/bibar_update.rdf</em:updateURL> 

em:name 是插件的名称。
   em:description  描述
   em:creator      作者
   em:homepageURL  主页
   em:iconURL     图标地址
   em:updateURL       查找更新地址

了解了上边的内容,就可以进行插件的编写了.  firefox它本身是基于Mozilla 框架开发的。 

大家可以在FF的地址栏输入以下地址 chrome://browser/content/browser.xul  来看一下 FF的本身自己的UI的描述 

在这里推荐大家用fireBug 来查看.. 可以清楚看到浏览器的DOM结构. 我们以后的操作都要针对这个DOM结构.

大家看到我们说要对插件UI描述的文件扩展名为.xul  对这xul语言 大家可以参考http://www.xulplanet.com/  这个网站..它里有XUL详细介绍。把它理解成一种HTML就可以了. 他的语法标记十分简单易懂。 
 
复制代码 代码如下:

      <toolbarbutton id="home-button" class="toolbarbutton-1 chromeclass-toolbar-additional" label="主页" ondragover="nsDragAndDrop.dragOver(event, homeButtonObserver);" ondragdrop="nsDragAndDrop.drop(event, homeButtonObserver);" ondragexit="nsDragAndDrop.dragExit(event, homeButtonObserver);" onclick="BrowserHomeClick(event);"/> 

    
这对FF上  对 "主页" 这个按钮的描述。 
 
复制代码 代码如下:

    <textbox sizetopopup="pref" id="urlbar" flex="1" chromedir="ltr" type="autocomplete" autocompletesearch="history" autocompletepopup="PopupAutoComplete" completeselectedindex="true" tabscrolling="true" showcommentcolumn="true" enablehistory="true" oninput="gBrowser.userTypedValue = this.value" ontextentered="return handleURLBarCommand(param);" ontextreverted="return handleURLBarRevert();"><deck id="page-proxy-deck" onclick="PageProxyClickHandler(event);"><image id="page-proxy-button" ondraggesture="PageProxyDragGesture(event);" tooltiptext="拖放此图标以创建到此页面的链接"/><image id="page-proxy-favicon" validate="never" ondraggesture="PageProxyDragGesture(event);" onload="this.parentNode.selectedIndex = 1;                                 event.stopPropagation();" onerror="gBrowser.addToMissedIconCache(this.src);                                  this.removeAttribute('src');                                  this.parentNode.selectedIndex = 0;" tooltiptext="拖放此图标以创建到此页面的链接"/></deck><hbox id="urlbar-icons"><button type="menu" style="-moz-user-focus: none;" class="plain" id="feed-button" chromedir="ltr" onclick="return FeedHandler.onFeedButtonClick(event);"><menupopup position="after_end" onpopupshowing="return FeedHandler.buildFeedList(this);" oncommand="return FeedHandler.subscribeToFeed(null, event);" onclick="checkForMiddleClick(this, event);"/></button><image tooltiptext="显示此窗口的安全性信息" id="lock-icon" onclick="if (event.button == 0) displaySecurityInfo(); event.stopPropagation();"/><image id="safebrowsing-urlbar-icon" tooltiptext="此页面可能具有危险性;点击查看详细信息。" level="safe" onclick="goDoCommand('safebrowsing-show-warning')"/></hbox></textbox> 

     
这是对FF“地址栏”描述
大家看是不是特别像HTML. 我们开始写插件的UI吧 。。 
     打开\chrome\content\overlay.xul 文件. 
  
复制代码 代码如下:

   <?xml version="1.0"?> 
      <overlay id="bisearch" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 
     <script src="chrome://blueideasearch/content/overlay.js" /> 

<overlay id="bisearch" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 就理解成.在写HTML时加入的那一句声明吧. 
    <script src="chrome://blueideasearch/content/overlay.js" /> 这是程序的处理部份.  就像在写HTML是引入JS一样.
   哧哧,是不是越来越像在写网页了.

    我们要确定插件要出现的位置. 比如我们的插件要出现在地址栏下边. 我们可以用FireBug来查看刚才我给的那个chrome的地址. 找到地址栏,并查看它的父结点.
    这里我查到地址栏的父结点为<toolbox id="navigator-toolbox">
    我们就这样写: 
 
复制代码 代码如下:

        <toolbox id="navigator-toolbox"> 
    <toolbaritem id="bdSearchBoxbar"> 
        <toolbarbutton id="bisearch_button" tooltiptext="转到蓝色理想" image="chrome://blueideasearch/content/blueidea.png" oncommand="GotoWebSite('http://bbs.blueidea.com');"></toolbarbutton> 
                </toolbaritem> 
          </toolbox> 

    
这个代码呢..是在<toolbox id="navigator-toolbox">下追加一个子节点 toolbarbutton 是一个按钮   oncommand是它的一个事件,当按下它时触发这个事件. 里边的响应的函数就在我们一开始引入的那个JS里. 
 
复制代码 代码如下:

     /** 
* 在当前窗口中打开链接。 
*/ 

function GotoWebSite(url){ 

    loadURI(url) 

时间: 2024-09-15 08:17:07

firefox扩展插件制作方法详细介绍_应用技巧的相关文章

UTF-8编码问题BOM详细介绍_应用技巧

今天在写php代码的时候,出现一个特郁闷的问题那就是两个一模一样的文件,在IE下显示有一个文件却出显了一个空白行,如地址所示http://www.kuomart.com/blog/my_ex/bom_utf8.htm以上出现空白行的页面是用php的require('t.htm')导入模板输出的,而我的php文件和htm文件都是用的记事本写的,然后保存为utf-8编码的,这样之后就出现了用nodepad保存utf8文件自动添加bom到文件的开始,起先自己测试用nodepad,dw,edplus打开

微信 小程序开发环境搭建详细介绍_相关技巧

微信小程序可谓是今天最火的一个名词了,一经出现真是轰炸了整个开发人员,当然很多App开发人员有了一个担心,微信小程序的到来会不会给移动端App带来一个寒冬,身为一个Android开发者我是不相信的,即使有,那也是很遥远的未来. 不管微信小程序是否能颠覆当今的开发格局,我们都要以好奇的心态去接收,去学习.不排斥新技术,所以,心动不如行动,赶紧先搭建一个微信小程序开发工具.那么接下来就让我们一起来开始吧. 先放一张Github上demo的动态图 开发工具下载是看到GitHub上的分享.那么你可以直接

极验验证码 安装部署详细介绍_相关技巧

随着互联网在人们生活中的地位越来越高,互联网安全问题也开始变得重要起来. 互联网黑色产业链就是互联网安全领域最强劲的敌人. 想必大家对于黑产都有所了解,那么黑产具体是怎么运作盈利的呢?大家可以查看下图哦~ 所以,保护账户安全是抗击黑产的第一步!而验证码就是确保账户安全的重要途径! 传统验证码不仅给用户带来了非常差的体验,而且在安全性上也开始抵抗不了黑客的恶意攻击!因此,安全性高.用户体验好的新型验证码才是我们需求的! 目前市场上,广受好评的"极验验证码",我觉得就很不错~ 大家可以体验

javascript编码的几个方法详细介绍_基础知识

escape定义和用法 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 参数 描述 string 必需.要被转义或编码的字符串.   返回值 已编码的 string 的副本.其中某些字符被替换成了十六进制的转义序列. 说明 该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / .其他所有的字符都会被转义序列替换. 提示和注释 提示:可以使用 unescape() 对 escape() 编码的

.net中 关于反射的详细介绍_实用技巧

概述反射• 通过反射可以提供类型信息,从而使得我们开发人员在运行时能够利用这些信息构造和使用对象. • 反射机制允许程序在执行过程中动态地添加各种功能.   运行时类型标识 •运行时类型标识(RTTI),可以在程序执行期间判定对象类型.例如使用它能够确切地知道基类引用指向了什么类型对象.•运行时类型标识,能预先测试某个强制类型转换操作,能否成功,从而避免无效的强制类型转换异常. •在c#中有三个支持RTTI的关键字:is . as  .typeof. 下面依次介绍他们   is运算符: 通过is

ASP.NET的实用技巧详细介绍_实用技巧

关于ASP.NET的实用技巧,其实我们已经接触到很多了.下面为大家总结一下,供大家参考. 1.跟踪页面执行 设置断点是页面调试过程中的常用手段,除此之外,还可以通过查看页面的跟踪信息进行错误排查以及性能优化.ASP.NET中启用页面跟踪非常方便,只需在Page指令中加入Trace="True"属性即可: <%@ Page Language="C#" Trace="true"> 跟踪信息可以分为两类: a.页面执行详细情况 其中主要包括

HTTP 2.0 详细介绍_相关技巧

在我们所处的互联网世界中,HTTP协议算得上是使用最广泛的网络协议.最近http2.0的诞生使得它再次互联网技术圈关注的焦点.任何事物的消退和新生都有其背后推动的力量.对于HTTP来说,这力量复杂来说是各种技术细节的演进,简单来说是用户体验和感知的进化.用户总是希望网络上的信息能尽可能快的抵达眼球,越快越好,正是这种对"快"对追逐催生了今天的http2.0. 1. HTTP2.0的前世 http2.0的前世是http1.0和http1.1这两兄弟.虽然之前仅仅只有两个版本,但这两个版本

构造函数中Perl方法用法介绍_应用技巧

Perl语言中Perl方法的概念你是否了解,这里向大家简单介绍一下,Perl类的Perl方法只不过是一个Perl子程序而已,也即通常所说的成员函数. Perl方法 一.Perl方法简介 Perl类的Perl方法只不过是一个Perl子程序而已,也即通常所说的成员函数.Perl方法定义不提供任何特殊语法,但规定Perl方法的第一个参数为对象或其被引用的包.Perl有两种Perl方法:静态Perl方法和虚Perl方法.静态Perl方法第一个参数为类名,虚Perl方法第一个参数为对象的引用.Perl方法

gb2312的详细介绍_相关技巧

基本信息 <信息交换用汉字编码字符集>是由我国国家标准总局1980年发布,1981年5月1日开始实施的一套国家  汉字编码字符集标准,标准号是GB 2312-1980.它是计算机可以识别的编码,适用于汉字处理.汉字通信等系统之间的信息交换.基本集共收入汉字6763个和非汉字图形字符682个.整个字符集分成94个区,每区有94个位.每个区位上只有一个字符,因此可用所在的区和位来对汉字进行编码,称为区位码. 这个码是唯一的,不会有重码字.把换算成十六进制的区位码加上2020H,就得到国标码.国标码