firefox 扩展开发技巧_相关技巧

Firefox Extension
参考:http://developer.mozilla.org/en/Extensions
http://www.ibm.com/developerworks/cn/web/wa-lo-firefox-ext/

目录结构:
chrome.mainfest        // 定义整个扩展的目录结构
install.rdf        // 定义扩展的ID,名称等等信息
chrome/
chrome/content/        // 定义扩展界面(.xul文件),定义扩展界面实现功能的逻辑(.js文件)
chrome/skin/        // 定义扩展界面上用到的图片,属性风格,皮肤文件等(.css,.ico,.png)
chrome/locale/
chrome/locale/en-US/        // 定义翻译字符串(.dtd文件),属性翻译字符串(.properties文件)
chrome/locale/zh-CN/     // 定义翻译字符串(.dtd文件),属性翻译字符串(.properties文件)
defaults/
defaults/preferences/    // 定义需要保存的信息默认值(.js文件)
components/        // 定义扩展逻辑用的方法接口(.xpt, .dll文件)

安装扩展:
将上面目录结构的文件打包成.zip文件,然后改后缀为.xpi,拖到firefox界面上就会弹出安装界面安装就可以了

chrome.mainfest详读

// 示例代码详解
# 在前面加"#"表示注释
# 注册chrome.manifest
# 指定将要读取的修改内容的路径,后面必须带"/" 可以修改Toolbars, menu bars, progress bars,
# and window title bars are all examples of elements that are typically part of the chrome

content    my_extension_name    chrome/content/

# 指定将要加载的皮肤路径,后面必须带"/"
skin    my_extension_name        classic/1.0     chrome/skin/

# 指定将要读取的语言路径,后面必须带"/"
locale    my_extension_name        en-US            chrome/locale/en-US/
locale    my_extension_name        zh-CN            chrome/locale/zh-CN/

# 将后面的文件添加到前面的文件里
overlay    chrome://browser/content/browser.xul    chrome://my_extension_name /content/statusbarOverlay.xul

# 都是可选参数
# style         chrome://URI-to-style                                 chrome://stylesheet-URI [flags]
# override     chrome://package/type/original-uri.whatever     new-resolved-URI [flags]
# resource     aliasname                                             uri/to/files/ [flags]
# application = app-ID
# appversion 操作符 version    (操作符为"=", "<", ">", "<=", ">=")
# os = WINNT(操作系统)
# osversion >= 10.5
# platform格式如下:
# content     global-platform jar:toolkit.jar!/toolkit/content/global-platform/     platform

install.rdf详读    
参考:http://developer.mozilla.org/en/Building_an_Extension

<?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>    当前平台下生成的GUID
// <em:version>      由"."连接的数字
// <em:type>    指定的数字.
        // 2代表Extensions,4代表Themes,8代表Locale,32代表Multiple Item Package
// <em:targetApplication>    指定这个扩展是为那个应用程序使用的
// 格式如下:    <em:id>指定的应用程序的GUID;
//        <em:minVersion>,<em:maxVersion>分别为应用程序的最小最大版本号
//<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>

// <em:name>    显示在应用程序界面上的扩展名称

// 下面的参数是可选择添加的
// <em:description>        描述该扩展的功能
// <em:creator>        创始人
// <em:homepageURL>        主页
// <em:updateURL>        更新主页
// <em:optionsURL>
// <em:aboutURL>
// <em:iconURL>
// <em:developer>        开发者
// <em:translator>        翻译者
// <em:contributor>         捐助者
// <em:targetPlatform>    目标程序的系统平台
// <em:localized>        集中显示一些扩展的信息
// <em:locale>    指定将来用那种语言来显示信息(必要),在使用了<em:localized>后用

// 例子:
<em:id>{69354808-F0D7-40CC-BB5F-8C1B8F57CECC}</em:id>
<em:version>0.91</em:version>
<em:type>2</em:type>
<em:name>statusbar settor</em:name>

// 目标程序为firfox
<em:targetApplication>
    <Description>
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> //firefox的GUID
        <em:minVersion>1.5</em:minVersion>
        <em:maxVersion>2.0.0.*</em:maxVersion>
    </Description>
</em:targetApplication>

// 添加可选的信息
// <creator>Federico Parodi</creator>
// <creator>Stefano Verna</creator>
// <creator>Nils Maier</creator>
// <developer>Federico Parodi</developer>
// <developer>Stefano Verna</developer>
// <developer>Nils Maier</developer>
// <aboutURL>chrome://dta/content/about/about.xul</aboutURL>
// <iconURL>chrome://dta/skin/common/icon.png</iconURL>
// <homepageURL>http://downthemall.net/</homepageURL>
// <optionsURL>chrome://dta/content/preferences/prefs.xul</optionsURL>

</Description>
</RDF>

chrome 详解:
1 chrome/content/
content这个文件夹里的文件类型主要包括.js和.xul两种
.xul文件主要用来实现界面布局的,当然也可以实现简单的逻辑操作,建议所有逻辑都放到相应的.js里去处理,下面给出实例代码statusbarOverlay.xul:
<?xml version="1.0" encoding="UTF-8"?>

// 定义xul中用到的多语言字符串
<!DOCTYPE overlay SYSTEM "chrome:// my_extension_name/locale/statusbarOverlay.dtd">

// 所有的.xul文件都要加的项,id可以随便设置的
<overlay id="bc_ext_overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

    //申明要用到的.js文件
    <script src=" statusbarOverlay.js"/>   
    //申明要用到的属性多语言字符串
    <stringbundleset id="stringbundleset">
        <stringbundle id="ext-strings" src="chrome:// my_extension_name/locale/ statusbarOverlay.properties"/>
    </stringbundleset>
//添加xul元素到firefox界面上
//相关xul元素特性请查看xul教程
//参考:http://developer.mozilla.org/en/XUL_Tutorial

<popup id="contentAreaContextMenu">

<menuitem image="chrome://my_extension_name/skin/download_all.png"  class="menuitem-iconic" id=" download_all_item"   label="&download_all_text;"

insertafter="context-selectall" oncommand=" onCmdDownloadAll(event)"/>

<menuitem image="chrome:// my_extension_name/skin/download_link.png" class="menuitem-iconic" id="download_link_item"  label="&download_link_text;"

accesskey="&download_link_text.accesskey;" insertafter="context-selectall" oncommand="onCmdDownloadSingleLink(event)"/>

<menuseparator id="seperator_1" insertafter="context-selectall" />

</popup>
</overlay>

.js文件主要用来相应.xul里逻辑处理,下面给出实例代码statusbarOverlay.js:
参考javescription脚本语法
onLoad: function()
{
    // initialization code
    this.initialized = true;
    this.strings = document.getElementById("bc_ext-strings");
    document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", onContentPopupMenu, false);  
},
onCmdDownloadSingleLink: function(e)
{
alert(“download single link”);
},

onCmdDownloadAll: function(e)
{
alert(“download all link”);
}

window.addEventListener("load", function(e) { onLoad(e); }, false);

2 chrome/skin/
存放.xul中用到的图片,属性风格,皮肤文件等(.css,.ico,.png)

3 chrome/locale/
chrome/locale/en-US/        // 定义翻译字符串(.dtd文件),属性翻译字符串(.properties文件)
chrome/locale/zh-CN/     // 定义翻译字符串(.dtd文件),属性翻译字符串(.properties文件)
.dtd文件中定义要翻译的字符串
示例代码:
在zh-CN文件夹中的statusbarOverlay.dtd
<!ENTITY download_link_text "下载此连接">
<!ENTITY download_all_text "下载全部连接">
在en-US文件夹中的statusbarOverlay.dtd
<!ENTITY download_link_text "download this link">
<!ENTITY download_all_text "download all links">

.properties文件中保存着要保存的属性的多语言字符
示例代码:
在zh-CN文件夹中的statusbarOverlay.properties
extensions.{69354808-F0D7-40CC-BB5F-8C1B8F57CECC}.description=常用来下载http链接。
在en-US文件夹中的statusbarOverlay.properties
extensions.{69354808-F0D7-40CC-BB5F-8C1B8F57CECC}.description=it used to download http links.

defaults 详解
4 defaults/preferences/     // 定义需要保存的信息默认值(.js文件)
.js文件中描述的是需要永久保存起来的变量的值,每次启动时会载入.js中字段中保存的值来初始化.xul文件中的元素
示例代码:
// 给变量定义默认值
pref("login.time","");
pref("username, "ghostjeky");
pref("extensions.{69354808-F0D7-40CC-BB5F-8C1B8F57CECC}.description", "chrome://my_extension/locale/statusbarOverlay.properties");//引用多语言属性字符串

5 components/        // 定义扩展逻辑用的方法接口(.xpt, .dll文件)

6 开发扩展时常用的几个扩展
DOM Inspector 主要用来检测目标位置的元素的id,例如:你想在主菜单-》工具-》选项菜单的后面再增加一个菜单,则只要用DOM Inspector检测出选项菜单的id为

menu_preferences,则你的xul就可以这么写<menuitem id=”myid” insertafter=” menu_preferences” label=”mymenuitem”/>
下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/6622
Extension Developer's Extension 主要用来测试你写的那段javascript代码是不是能够正确执行,预览xul代码是不是你想要的布局.
在about:config中设置(只有安装了这个扩展才有的配置项)
browser.dom.window.dump.enabled  = true //允许使用 dump() 语句向标准控制台输出信息,真正能看到dump()语句的输出还有使用-console参数启动firefox
下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/7434
Javascript debugger 主要用来调试js代码用的,但要能在里面找到你写的js文件前提是你的js已经正确加载了,先将Debug菜单下面的Exclude Browser Files前面的勾去掉
下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/216
Firebug 听很多人说很好用 调试js,查找错误,但我一直没有领略到它的好处,只是用来查找js的错误
下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/1843

时间: 2024-09-13 05:47:00

firefox 扩展开发技巧_相关技巧的相关文章

微信小程序版的知乎日报开发实例_相关技巧

先看看效果图 开发环境准备 小程序 出来第二天就被破解,第三天微信就把开发工具开发下载了, 现在只需要下载 微信开发者工具 就可以使用了, 创建项目的时候,要选择无 appid, 这样就不会有 appid 的验证了. 目录结构      1.app.js 注册app逻辑, app.wxss 全局样式文件 app.json 配置信息      2.pages 存放页面文件      3.utils 工具类代码      4.images 图片资源文件 小程序中每一个页面都会有三个文件 .wxml

Web开发/设计人员应当知道的15个网站_相关技巧

ColorCombos 开发/设计人员应当知道的15个网站_相关技巧-web前端开发技巧"> 在进行网站设计的时候,开始步骤的其中一项(也是最重要)的内容是选择出一个配色方案. Color Combos让你可以浏览上千个不同的颜色组合,以便从中为你即将开始的设计汲取灵感.其配色方案可按颜色浏览. LIpsum 风靡之至的Lorem Ipsum文字,其大名谁人不知?哪个不晓?(译注:查了才知道,这是指一篇用于测试排版设计的拉丁文文章,从15世纪开始就被广泛使用,文章因以Lorem Ipsum

高性能WEB开发(5) 减少请求,响应的数据量_相关技巧

GZIP压缩    gzip是目前所有浏览器都支持的一种压缩格式,IE6需要SP1及以上才支持(别说你还在用IE5,~_~).gzip可以说是最方便而且也是最大减少响应数据量的1种方法. 说它方便,是因为你不需要为它写任何额外的代码,只需要在http服务器上加上配置都行了,现在主流的http服务器都支持gzip,各种服务器的配置这里就不一一介绍(其实是我不知道怎么配), nginx的配置可以参考我这篇文章:www.blogjava.net/BearRui/archive/2010/01/29/w

对Web开发人员有用的8个网站小结_相关技巧

1. Min.us: 上传图片的最简单方 开发人员有用的8个网站小结_相关技巧-web前端开发培训小结"> 任何开发人员.设计师.网络管理员都必须跟客户和同事在线分享图片.Min.us的全部服务就是让你极度简单地上传图片:只需把图片拖拽到Min.us的网页里,图片就会保存在服务器上.并且自动生成短网址,这样你就可以通过这个网站分享图片了. 访问Min.us 2.Wirify:把任何网页转换成线框图 设计网站时线框图非常有用.Wirify是一个可以把任何网页立刻转换成线框图的书签工具,这样你

Web 开发常用工具 大家自己查找下载_相关技巧

1.regex-coach --正则表达式工具 开发常用工具 大家自己查找下载_相关技巧-excel常用技巧"> 2. IECookiesView--IE的cookie查看工具 3.Flex Trace Panel --Flex开发日志观察工具 4.IE Development Toolbar --微软提供的IE开发插件 5.sIEve--javascript内存泄漏检测工具 6.HttpAnalyzer--HTTP抓包工具

如何轻松搭建Windows8云平台的开发环境_实用技巧

准备工作 在搭建环境前,大家需要在Windows Azure平台注册免费账号,注册完成后,即可获得90天免费使用权限.注册方法请参考:免费试用Windows Azure云平台(无须提供信用卡) 如果你具有微软MSDN Subscription账户,可以根据账户权限申请为期一年的Windows Azure账号.   开发环境_实用技巧-windows实用技巧">   具有Windows Azure账号后,请检查本地机器是否安装了远程桌面应用(Remote Desktop),在随后的文章中,将

Web 设计与开发者必须知道的 15 个站点_相关技巧

 ColorCombos 开发者必须知道的 15 个站点_相关技巧-汇付天下开发者站点"> 配色是 Web 设计的首要大事,Color Combos 帮你预备了数千种配色方案,可以根据色调浏览选取.LIpsum Lorem Ipsum Text 是一中自造的,字典中不存在的单词,是在演示页面结构的时候,需要加文字的地方使用 Lorem Ipsum Text 填充可以避免用户因关注文字的意思而分神.Lipsum.com 可以帮你生成制定数目的 Lorem Ipsum 单词.What the

提高代码可读性的十大注释技巧分享_相关技巧

本文讲述了提高代码可读性的十大注释技巧.分享给大家供大家参考,具体如下: 很多程序员在写代码的时候往往都不注意代码的可读性,让别人在阅读代码时花费更多的时间.其实,只要程序员在写代码的时候,注意为代码加注释,并以合理的格式为代码加注释,这样就方便别人查看代码,也方便自己以后查看了.下面分享十个加注释的技巧: 1. 逐层注释 为每个代码块添加注释,并在每一层使用统一的注释方法和风格.例如: 针对每个类:包括摘要信息.作者信息.以及最近修改日期等: 针对每个方法:包括用途.功能.参数和返回值等. 在

分享15个美化代码的代码语法高亮工具_相关技巧

本文作者是Gavin McLeod,一个被困在<电子世界争霸战>里的骨灰级Web极客.在文中列举了15个帮助开发者快速编码.优化代码的语法高亮工具,每个高亮工具都有其功能特色.(以下是编译内容) 开发者和顽固的代码极客深知Code Syntax Highlighter(以下简称"代码语法高亮工具")作为二级符号的一种形式,便于在一个结构化语言或标记语言里书写代码.有些代码高亮编辑器里融合了多个语法高亮功能,例如拼写检查.代码折叠.语法高亮工具可以在总体策略的使用上起到较大的