首页 > 浏览器 > 基于Addon-SDK开发火狐扩展

基于Addon-SDK开发火狐扩展

2014年10月27日 发表评论 阅读评论 11,724 次浏览

时间:2014/10/27
火狐版本:33.0
一,在Windows上安装Addon-SDK
1,首先确定已经安装有Python,我电脑上安装的是Python 2.7.7:

C:\Users\Lenky>python --version
Python 2.7.7

2,Addon-SDK在这里https://addons.mozilla.org/en-US/developers/tools/builder下载
进入到sdk解压目录,执行命令:

C:\Users\Lenky>cd D:\gitlab\ff-ext\addon-sdk-1.17\addon-sdk-1.17

C:\Users\Lenky>d:

D:\gitlab\ff-ext\addon-sdk-1.17\addon-sdk-1.17>bin\activate
Welcome to the Add-on SDK. For the docs, visit https://addons.mozilla.org/en-US/developers/docs/sdk/latest/

(D:\gitlab\ff-ext\addon-sdk-1.17\addon-sdk-1.17) D:\gitlab\ff-ext\addon-sdk-1.17\addon-sdk-1.17>

命令activate会修改一些使用Addon-SDK所必须的环境变量,后续操作都将在这里进行。

参考:https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Installation

二,采用Addon-SDK开发的简单扩展示例
继续在前面activate命令提示栏下执行命令:

(D:\gitlab\ff-ext\addon-sdk-1.17\addon-sdk-1.17) D:\gitlab\ff-ext\addon-sdk-1.17\addon-sdk-1.17>mkdir my-addon

(D:\gitlab\ff-ext\addon-sdk-1.17\addon-sdk-1.17) D:\gitlab\ff-ext\addon-sdk-1.17\addon-sdk-1.17>cd my-addon

(D:\gitlab\ff-ext\addon-sdk-1.17\addon-sdk-1.17) D:\gitlab\ff-ext\addon-sdk-1.17\addon-sdk-1.17\my-addon>cfx init
* lib directory created
* data directory created
* test directory created
* generated jID automatically: jid1-whxWY9a308x9KA
* package.json written
* test/test-main.js written
* lib/main.js written

Your sample add-on is now ready.
Do "cfx test" to test it and "cfx run" to try it.  Have fun!

(D:\gitlab\ff-ext\addon-sdk-1.17\addon-sdk-1.17) D:\gitlab\ff-ext\addon-sdk-1.17\addon-sdk-1.17\my-addon>

完成扩展插件的初始代码,下面就可以根据我们自己业务逻辑的需要对代码进行修改。
这里仅做过测试,修改lib\main.js文件,加上如下代码:

var buttons = require('sdk/ui/button/action');
var tabs = require("sdk/tabs");

var button = buttons.ActionButton({
  id: "mozilla-link",
  label: "Visit Mozilla",
  icon: {
    "16": "./icon-16.png",
    "32": "./icon-32.png",
    "64": "./icon-64.png"
  },
  onClick: handleClick
});

function handleClick(state) {
  tabs.open("https://www.mozilla.org/");
}


上面的sdk-api函数可以参考:https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs
https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs
https://developer.mozilla.org/en-US/Add-ons/SDK

接着保存下面三张图片到data目录:
icon-16.png
icon-32.png
icon-64.png

之后在命令行里执行:

(D:\gitlab\ff-ext\addon-sdk-1.17\addon-sdk-1.17) D:\gitlab\ff-ext\addon-sdk-1.17\addon-sdk-1.17\my-addon>cfx run
Using binary at 'C:\Program Files (x86)\Mozilla Firefox\firefox.exe'.
Using profile at 'c:\users\lenky\appdata\local\temp\tmpuo8bc8.mozrunner'.

上面cfx run命令会打开一个新的火狐实例窗口,并且刚写的扩展也已经被加载了。

点击扩展按钮,即可打开网址:https://www.mozilla.org/

三,打包&安装
在命令提示行按ctrl+c结束执行,再执行:

(D:\gitlab\ff-ext\addon-sdk-1.17\addon-sdk-1.17) D:\gitlab\ff-ext\addon-sdk-1.17\addon-sdk-1.17\my-addon>cfx xpi
Exporting extension to my-addon.xpi.

即可。

在火狐里按快捷键Ctrl+O或菜单选择:File -> Open File…
在文件选择对话框里选择打包生成的xpi文件my-addon.xpi,根据提示选择Install安装即可。

参考:https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Getting_started

四,可以调整Firefox的某些参数,方便开发:
firefox的地址栏输入about:config回车,打开配置界面。
参数:javascript.options.showInConsole= true
作用:将chrome文件中的错误显示在Console里。
参数:nglayout.debug.disable_xul_cache= true
作用:关闭XUL缓存,这允许不重启而改变窗口以及对话的内容。这里,可以使用目录而不是Jar。但是Overlay改变后,overlay文档必须重载(这一项非常有用,修改uxl后不用重启窗口)。
参数:browser.dom.window.dump.enabled= true
作用:这将允许dump()函数输出到stdout里。参考window.dump函数。特权应用也可用nsIConsoleService。
参数:javascript.options.strict= true
作用:启用严格JavaScript错误提示,js出错调试可用。
参数:extensions.logging.enabled= true
作用:这将给出更多关于安装以及更新插件的日志信息。
参数:nglayout.debug.disable_xul_fastload= true (仅限Gecko 2.0+ (Firefox 4.0+))
参数:dom.report_all_js_exceptions= true
以上参数有些在你的配置项已经存在,可能设置的状态值不对,修改下即可。有些参数可能没有,需要你手动创建这些参数和值。只需要在list中右键-》新建-》布尔即可。

参考:http://blog.csdn.net/ugg/article/details/6759571

转载请保留地址:http://www.lenky.info/archives/2014/10/2447http://lenky.info/?p=2447


备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从CC创作共享协议,而一些私人性质较强的心情随笔,建议不要转载。

法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以Email或书面等方式告知,本站将及时删除相关内容或链接。

分类: 浏览器 标签: , ,
  1. l4ke
    2015年5月21日21:33 | #1

    想请教一下 关于main函数跟 自己写的JS函数该如何交互呢

  1. 本文目前尚无任何 trackbacks 和 pingbacks.