火车采集器软件交流官方论坛

 找回密码
 加入会员
搜索
火车采集器V9版免费下载火车浏览器 - 可视采集,万能群发,全自动脚本工具
123
返回列表 发新帖
楼主: faunus

Firefox扩展开发学习杂记

[复制链接]
 楼主| 发表于 2008-12-3 21:07:28 | 显示全部楼层
如何开发Firefox插件               
最初接触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: 对这种技术类的心得,我懒的去组织(很多人也懒得去写),所以写的相当流水,当然看这种文章你也只需要扫视一下,得到自己需要的几个字就行了
 楼主| 发表于 2008-12-5 12:33:17 | 显示全部楼层

以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 编辑 ]
 楼主| 发表于 2008-12-5 21:38:29 | 显示全部楼层

实战 Firefox 扩展开发

 楼主| 发表于 2008-12-13 18:04:01 | 显示全部楼层

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 编辑 ]
 楼主| 发表于 2008-12-15 21:38:36 | 显示全部楼层
=============================
属性:preferences,简称pref
gZealChinaStock.m_prefs = Components.classes["@mozilla.org/preferences-service;1"]
                             .getService(Components.interfaces.nsIPrefBranch);

nsIPrefBranch 有如下 成对的函数:
针对:string  integer 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 编辑 ]
发表于 2016-2-9 22:46:07 | 显示全部楼层
和你们一块学习。。。
您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

QQ|手机版|Archiver|火车采集器官方站 ( 皖ICP备06000549 )

GMT+8, 2024-11-24 16:42

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表