热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

firefox扩展开发技巧

firefoxextension参考:http:developer.mozilla.orgenextensions目录结构:chrome.mainfest       定义整个扩展

firefox extension
参考:http://developer.mozilla.org/en/extensions

目录结构:
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



// 下面的参数是必须要添加的
//     当前平台下生成的guid
//       由"."连接的数字
//     指定的数字.
        // 2代表extensions,4代表themes,8代表locale,32代表multiple item package
//     指定这个扩展是为那个应用程序使用的
// 格式如下:    指定的应用程序的guid;
//        ,分别为应用程序的最小最大版本号
//
// 
//   {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
//    1.5
//    2.0.0.*
// 

//

//     显示在应用程序界面上的扩展名称

// 下面的参数是可选择添加的
//         描述该扩展的功能
//         创始人
//         主页
//         更新主页
//
//
//
//         开发者
//         翻译者
//          捐助者
//     目标程序的系统平台
//         集中显示一些扩展的信息
//     指定将来用那种语言来显示信息(必要),在使用了后用

// 例子:
{69354808-f0d7-40cc-bb5f-8c1b8f57cecc}
0.91
2
statusbar settor

// 目标程序为firfox

   
        {ec8030f7-c20a-464f-9b0e-13a3a9e97384} //firefox的guid
        1.5
        2.0.0.*
   

// 添加可选的信息
// federico parodi
// stefano verna
// nils maier
// federico parodi
// stefano verna
// nils maier
// chrome://dta/content/about/about.xul
// chrome://dta/skin/common/icon.png
// http://downthemall.net/
// chrome://dta/content/preferences/prefs.xul


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

// 定义xul中用到的多语言字符串

// 所有的.xul文件都要加的项,id可以随便设置的

    //申明要用到的.js文件
       
    //申明要用到的属性多语言字符串
   
       
   

//添加xul元素到firefox界面上
//相关xul元素特性请查看xul教程
//参考:http://developer.mozilla.org/en/xul_tutorial

insertafter="context-selectall" Oncommand=" oncmddownloadall(event)"/>

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


.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


在en-us文件夹中的statusbaroverlay.dtd

.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就可以这么写
下载地址: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



推荐阅读
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 单元测试:使用mocha和should.js搭建nodejs的单元测试
    2019独角兽企业重金招聘Python工程师标准BDD测试利器:mochashould.js众所周知对于任何一个项目来说,做好单元测试都是必不可少 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • Ext JS MVC系列一:环境搭建与框架概览
    本文主要介绍了如何在项目中使用Ext JS 4作为前端框架,并详细讲解了Ext JS 4的MVC开发模式。文章将从项目目录结构、相关CSS和JS文件的引用以及MVC框架的整体认识三个方面进行总结。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 装饰者模式(Decorator):一种灵活的对象结构设计模式
    装饰者模式(Decorator)是一种灵活的对象结构设计模式,旨在为单个对象动态地添加功能,而无需修改原有类的结构。通过封装对象并提供额外的行为,装饰者模式比传统的继承方式更加灵活和可扩展。例如,可以在运行时为特定对象添加边框或滚动条等特性,而不会影响其他对象。这种模式特别适用于需要在不同情况下动态组合功能的场景。 ... [详细]
  • 本文详细解析了Java类加载系统的父子委托机制。在Java程序中,.java源代码文件编译后会生成对应的.class字节码文件,这些字节码文件需要通过类加载器(ClassLoader)进行加载。ClassLoader采用双亲委派模型,确保类的加载过程既高效又安全,避免了类的重复加载和潜在的安全风险。该机制在Java虚拟机中扮演着至关重要的角色,确保了类加载的一致性和可靠性。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 在Eclipse中提升开发效率,推荐使用Google V8插件以增强Node.js的调试体验。安装方法有两种:一是通过Eclipse Marketplace搜索并安装;二是通过“Help”菜单中的“Install New Software”,在名称栏输入“googleV8”。此插件能够显著改善调试过程中的性能和响应速度,提高开发者的生产力。 ... [详细]
  • 深入浅出 webpack 系列(二):实现 PostCSS 代码的编译与优化
    在前一篇文章中,我们探讨了如何通过基础配置使 Webpack 完成 ES6 代码的编译。本文将深入讲解如何利用 Webpack 实现 PostCSS 代码的编译与优化,包括配置相关插件和加载器,以提升开发效率和代码质量。我们将详细介绍每个步骤,并提供实用示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • Vuforia 开发指南:第二章 环境配置与搭建
    本章节详细介绍了如何在Vuforia官网上完成账号注册及环境配置。首先,访问Vuforia官方网站并点击“Register”按钮,按照提示填写必要的个人信息。提交表单后,系统将验证信息并创建账户。接下来,用户需要下载并安装Vuforia开发工具,确保开发环境的顺利搭建。此外,还提供了详细的配置步骤和常见问题的解决方案,帮助开发者快速上手。 ... [详细]
author-avatar
圆季
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有