最初接触firefox extension是在做网站开发的时候方便调试用的,并没有去做的想法,后来玩一个网页游戏:ogame,接触到了foxgame,看了一下它的源代码,完全js+xul控制的,于是想自己学着去做一些插件用。
第一个插件就是先前的hello world程序了,后来的都是在上面修改的overlay.js 演变成了一个ipcn取密码的插件,算是第一个可以使用的了,用到的技术也不怎么新颖,一些xmlhttprequest的东西
国庆期间又开始接触另一个网页游戏(我到现在学的东西大多都是由玩游戏中接触到的)chaoswar,从技术上看这是个web2.0的游戏,应用了xmlhttprequest和json。我于是也利用这个做了一个自动拉i羊的插件,现在还在使用,效果还不错:)(鉴于游戏要反外挂,我就不把源程序贴出来了)里面只是用到了一点新技术,其余的还都是通过xmlhttprequest接受和发送请求,模拟操作而已。
下面介绍一下用到的工具,当然这些是给那些想入门extension制作的人看的
http://ted.mielczarek.org/code/mozilla/
一个mozilla成员的个人网站,提供了很多插件。我用到的就两个:
一、http://ted.mielczarek.org/code/mozilla/extensionwiz/
自动生成插件的向导
二、http://ted.mielczarek.org/code/mozilla/extensiondev/
我从mozilla论坛http://forums.mozillazine.org/ 问得这个插件之后,很兴奋的感觉,呵呵,这就是自己蒙昧以求的。主要介绍一下如何使用它
安装好之后,javascript shell, javascript environment, xul editor都是不错的工具
javascript shell, javascript environment不仅对开发firefox extension有用,平时用来调试js也是很不错的。
打开javascriptshell,内置函数props向当的好,你可以查看这个对象属性、方法。其实对做这种开发来说更多的是经验,当你根本不知道如何获取页面内容,不知道firefox的window到底是个什么东西,一切从摸索中开始是很痛苦的(当然发现一块新大陆也是很刺激的)通过props你可以迅速的知道那些是你需要的。
还一点就是它可以实时输出变量的值,这点对于调试一个较短的方法很有用,不必要每次都写好了再用js debugger去跟踪
重要的一点是你可以去研究他的源代码,里面可能会有你想要到的东西。我的firefox插件源代码都打开了一遍(扫视一下)说不定那个角落就有你需要的一个方法。
ps: 对这种技术类的心得,我懒的去组织(很多人也懒得去写),所以写的相当流水,当然看这种文章你也只需要扫视一下,得到自己需要的几个字就行了
以Windows登录码安装扩充套件
这篇文章说明Firefox/Thunderbird 1.5中新功能--以登录码安装扩充套件的方法,学会本招有助于布署Fx/Tb。 本文編譯自Adding Extensions using the Windows Registry ( http://developer.mozilla.org/en/docs/Adding_Extensions_using_the_Windows_Registry ) ,在devmo 有正體中文版時可能會移過去。本文编译自Adding Extensions using the Windows Registry ( http://developer.mozilla.org/en/docs/Adding_Extensions_using_the_Windows_Registry ) ,在devmo有正体中文版时可能会移过去。简介本文演示以Windows 登錄碼(Registry)「安裝」Firefox/Thunderbird 擴充套件 ( http://developer.mozilla.org/en/docs/extension )的方法。本文演示以Windows登录码(Registry)「安装」Firefox/Thunderbird 扩充套件 ( http://developer.mozilla.org/en/docs/extension )的方法。 此功能可以方便協力廠商的程式為Firefox 或Thunderbird 安裝套件。此功能可以方便协力厂商的程式为Firefox或Thunderbird安装套件。
注意本文所描述的功能只在Firefox/Thunderbird 1.5 以上版本有用。 注意本文所描述的功能只在Firefox/Thunderbird 1.5以上版本有用。
[ 編輯 ] [ 编辑 ]
安裝安装在下列兩個登錄碼下新增項目便可安裝套件:在下列两个登录码下新增项目便可安装套件:
HKEY_CURRENT_USER\Software\Mozilla\Firefox\Extensions
HKEY_LOCAL_MACHINE\Software\Mozilla\Firefox\Extensions
若要裝在Thunderbird 中,則將上面的Firefox改為Thunderbird即可。若要装在Thunderbird中,则将上面的Firefox改为Thunderbird即可。
新增的項目需以擴充套件的ID ( http://developer.mozilla.org/en/docs/Install_Manifests#id )為名、型態設定為REG_SZ ,其值則為套件安裝檔所在資料夾的完整路徑。新增的项目需以扩充套件的ID ( http://developer.mozilla.org/en/docs/Install_Manifests#id )为名、型态设定为REG_SZ ,其值则为套件安装档所在资料夹的完整路径。 舉例來說,要安裝建立擴充套件 ( http://developer.mozilla.org/en/docs/Building_an_Extension )範例中的套件,則需新增一名為sample@foo.net的登錄碼項目,並將其值設定為c:\extensions\myExtension 。举例来说,要安装建立扩充套件 ( http://developer.mozilla.org/en/docs/Building_an_Extension )范例中的套件,则需新增一名为sample@foo.net的登录码项目,并将其值设定为c:\extensions\myExtension 。
新增登錄碼之後,下回Firefox/Thunderbird 啟動時便會偵測其值遂行安裝。新增登录码之后,下回Firefox/Thunderbird启动时便会侦测其值遂行安装。 在Firefox/Thunderbird 執行中時依然可以更動登錄碼。在Firefox/Thunderbird执行中时依然可以更动登录码。
如果HKEY_CURRENT_USER及HKEY_LOCAL_MACHINE中有相同的登錄碼項目,則會先行採用HKEY_CURRENT_USER中的套件;如果使用者自行安裝過相同的擴充套件,則自行安裝的會優先使用。如果HKEY_CURRENT_USER及HKEY_LOCAL_MACHINE中有相同的登录码项目,则会先行采用HKEY_CURRENT_USER中的套件;如果使用者自行安装过相同的扩充套件,则自行安装的会优先使用。
[ 編輯 ] [ 编辑 ]
移除移除要移除以Windows 登錄碼安裝的套件,只要將相對應的登錄碼項目移除即可。要移除以Windows登录码安装的套件,只要将相对应的登录码项目移除即可。 移除登錄碼之後,下回Firefox/Thunderbird 啟動偵測後便會一併移除套件。移除登录码之后,下回Firefox/Thunderbird启动侦测后便会一并移除套件。 在Firefox/Thunderbird 執行中時依然可以更動登錄碼。在Firefox/Thunderbird执行中时依然可以更动登录码。
[ 本帖最后由 faunus 于 2008-12-5 12:34 编辑 ]
实战 Firefox 扩展开发
http://www.ibm.com/developerworks/cn/web/wa-lo-firefox-ext/体例不错
Firefox 扩展中文化实例教程
http://wiki.sociz.com/@Firefox_% ... B%E6%95%99%E7%A8%8B值得一看的教程收藏点
http://blog.csdn.net/allen1981813/category/322028.aspx
一个类,可以操作Firefox Preference收藏
学习让Firefox插件有属性收藏
Firefox Extension 开发日记
http://ericwangqing.spaces.live.com/Blog/cns!344998BE3BC27E42!173.entry
通过XULRunner获取系统语言http://www.exp2up.com/blog/category/xul/
套件開發指南(超好的东东)
http://wiki.moztw.org/index.php?title=%E5%A5%97%E4%BB%B6%E9%96%8B%E7%99%BC%E6%8C%87%E5%8D%97_-_Googlebar_Lite&diff=next&oldid=11024
[ 本帖最后由 faunus 于 2008-12-15 22:25 编辑 ] =============================
属性:preferences,简称pref
gZealChinaStock.m_prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
nsIPrefBranch 有如下 成对的函数:
针对:stringinteger boolean
getBoolPref(), setBoolPref();
getCharPref(), setCharPref();
getIntPref(),setIntPref();
setComplexValue(),getComplexValue();
其中有一点要注意一下,
不知道这个Prefs是把变量保存到哪里的,
也不知道它的格式,
好像不支持中文(至少我这里是),
只好对中文做一下处理,
escape和unescape。
这样一个全局的变量就可以存贮了,
在其他函数里也可以通过这个Prefs来实现对他们的读取。
===========================================
// load localization strings
if (!this.m_stringbundle) {
try {
var oBundle = Components.classes["@mozilla.org/intl/stringbundle;1"]
.getService(Components.interfaces.nsIStringBundleService);
this.m_stringbundle = oBundle.createBundle("chrome://chinastock/locale/chinastock.properties");
} catch(err) {
this.m_stringbundle = false;
}
if (!this.m_stringbundle) {
this.log(1, 'ERROR (init): failed to find chinastock-bundle');
}
}
-------------------------------------------------------------------
extensions.{3ad23825-80a9-cf70-87b6-ee84ceb20276}.description=在状态栏显示您指定的股票当前最新价格信息,通过右键菜单可以设定股票代码并查看详细的股票信息。
chinastock.button.tooltip.disabled=启用 China Stock
chinastock.button.tooltip.enabled=禁用 China Stock
chinastock.panel.tooltip.disabled=单击状态栏禁用 China Stock
chinastock.panel.tooltip.enabled=单击状态栏启动 China Stock
chinastock.panel.tooltip.errstock=非法的股票代码
chinastock.panel.tooltip.nostockset=您需要在选项界面设置至少一个股票
chinastock.panel.label.disabled=CS已禁用
chinastock.panel.label.enabled=CS启用中
chinastock.panel.label.nostockset=未设置任何股票
[ 本帖最后由 faunus 于 2008-12-15 22:17 编辑 ] 和你们一块学习。。。