初步认识Firefox

No Comments

用了Firefox也有一段时间了,当它还叫做Firebird的时候我就已经好奇的装上了它。那个时候除了IE以外我还装了Mozilla(Suite),真正是个庞然大物,后续版本经常建议在系统启动时运行它那个QuickLaunch,以便在用户真正需要浏览器的时候确保Mozilla(Suite)的一些组件已经装载了,否则那启动时间真是无与伦比,无论是想简单的用Mozilla Chat上个IRC还是用浏览器开它十几个tab。

貌似跑题了……

昨天闲来无事,焚香静坐后学习了一下Firefox的扩展机制,嗯,扩展,extension,而不是可能被一些人说为插件(plugin)的东西,我记得我以前好像唠叨过二者的不同,plugin应该更底层一些。看来我一直的理解还是有问题,在我的想法里Firefox作为浏览器来说还是一个真刀真枪的本地代码拼装起来的东西,那些UI控件还是用的操作系统的那套,只不过人家用了一些招数把跨平台的部分用代码封装起来,看上去比较类似wxWidgets、Qt之类的库,只不过全面一些,但其实上Firefox的方法来的更为颠覆一些,那就是浏览器上能看到的一切皆是XUL。

打开Firefox,映入眼帘的这个可爱的界面,无论你应用了什么外观主题,堆砌了多少扩展,它都是一个XUL文档(chrome://browser/content/browser.xul),查看$FIREFOX_DIR/chrome/browser.jar!/content/browser/browser.xul,这就是每天你面对着的这个界面,哦,它当然不包括Google Toolbar,没有AdBlock,这些都是通过扩展完成的,而不用直接修改这个XUL文档的内容。Firefox使用的XUL Overlay正是扩展和主题得以完成的根本,使用过程中感觉XUL Overlay很直观,无论是当作Overlay的XUL文档还是被Overlay的XUL文档,与普通的XUL文档都没有任何区别,除了一个描述清单(chrome.manifest)以外没有再多的废话,想改变哪里,就在Overlay XUL文档里描述你的界面你的想法,再向chrome.manifest里添加一行描述Overlay关系的指令(或许有其他方法描述?直觉那些RDF很不简单),然后把这些东西打包当作扩展安装,重启Firefox之后就能看到改变。用XUL的好处是任何人不用依赖任何开发工具就能很好的制作扩展,如果像我一直以为的那种依赖本地代码的应用的话,那就只有拥有熟练开发本领的专业人员才能制作扩展,或者像Maxthon一样依赖HTML,但HTML终究能力有限,其要解决的问题是显示,而不是要制造一套完整的UI解决方案,即使也可以像XUL一样使用javascript,但诸如command、commandset甚至数据源之类的高级货还是缺乏的,而且,虽然利用HTML也可以描出XUL中的所有控件,但模型上还是稍微有些差距,比如命令和事件以及数据源,好在经过Ajax的一阵吹风,HTML+Javascript也重新焕发光彩,用Dojo这样比较完善的东西来实现XUL也不是没有可能,然而还是那句话,模型上的差距,是HTML没法追上的,相反的在表现方式上XUL和HTML一样也有差距不是~

收获就是做了一个简单的扩展,用来在浏览flickr上的图片时直接访问原始图片:P 还有就是意外的发现了为什么Firefox有的时候可能让人觉得反应迟缓:阅读Firefox自己的chrome里的Javascript代码的时候,发现了很多调用setTimeout来延迟某些方法调用的地方,这些地方大部分是为了确保诸如文档(包括HTML以及XUL)加载、更新全局变量的完成,避免出现意外,比如在文档没有加载的时候去访问文档的属性及其内部变量,或者在全局变量上发生同步错误,导致一些灵异现象。我试了试直接调用被延迟调用的方法,其实这些方法的速度还是很快的。

可能做页面做多了,Greasemonkey的user scripts也做多了,在编写扩展中的javascript的时候总是搞混document对象,因为我还是试图用自己熟悉的方法,通过HTMLDocument来调用已经用烂了的那些方法,后来自己抽自己一下,提醒自己一定要用XUL文档里的元素提供的方法。

这几年真是白用Firefox了,竟然才知道Firefox究竟是个什么东西。用XULRunner(GRE)外加全套XUL、XPCOM来做浏览器的做法实在够cool,给我的感觉像是以UI驱动的Java=) Sigh,我还一直奇怪那么多号称基于”Firefox、Mozilla架构”的应用是怎么做出来的了,实在是老土的不行了……

Technorati :

FirefoxFlicks赢家视频

No Comments

Firefox Flicks

FirefoxFlicks竞赛已经宣布了Firefox推广视频大赛的获奖视频,包括DareDevil, Wheee!, Fox Fever, This is HotGive me the soap。看完这些视频,我还是喜欢Wheee!This is HotThis is Hot制作比较好,而Wheee!应该比较合那些鄙视IE的人们的口味,剩下那些家酿的也很不错,只不过要做个选择的话……嘿嘿~总之也不能无视劳动人民的创意,尤其在4月30日。

如果在线观看速度比较慢,可以直接下载下面的.mov:
DareDevil: http://media.revver.com/broadcast/19326/video.mov
Wheee!: http://media.revver.com/broadcast/19542/video.mov
Fox Fever: http://media.revver.com/broadcast/21146/video.mov
This is Hot: http://media.revver.com/broadcast/20674/video.mov
Give me the soap: http://media.revver.com/broadcast/19836/video.mov

Technorati : ,

养猴,嗯,grease猴子

No Comments

这个插件自从装上就一直闲置,因为感觉很多用户脚本听起来没啥意思,而且谣传这东西会造成Firefox不稳定(现在想起来这种谣传真是比较扯)。

最近花在Google Reader上的时间比以前多得多,中文还凑合,看英文实在累眼:( 今天终于觉得应该注意一下眼睛了,可怎么办乜?

遂想起Greasemonkey这个插件,Google了一下,找到这个比较完善的Dive into GreaseMonkey中文译本,热身一下感觉还可以,就自己做了一个脚本,也没啥作用,就是把Google Reader里面的阅读窗口的正文部分字体放大一下,脚本简单得不好意思拿出手,就不贴上来了。对付通过AJAX来装载内容的页是比较麻烦,快睡觉了,不想再扯到事件或者比较傻而且完成这个任务会浪费CPU的window.setInterval,就把整个阅读窗口(右边那部分)的字体都放大了,哈~XD

又做了几个比较扯的脚本,哈哈,这个插件真的要Orz一下,用起来很方便。建议装个中文版

Technorati : ,

瘦身Mozilla Firefox

No Comments

这次不是瘦掉extensions,而是plugins。好像中文用户对这两个概念区分很难,有时都统称“插件”或者统称为“扩展”了,实际上还是有很大不同的,表面上看来plugins更贴近浏览器底层和Gecko运行时环境——著名的GRE(Gecko Runtime Environment),深入的看的话…抱歉目前还没有这个打算
主要问题是在我的机器上有时候Mozilla系浏览器——包括经典的Mozilla Suite/SeaMonkey和大红大紫的Mozilla Firefox和——会造成蓝屏,而蓝屏时的错误码总是IRQL_LESS_OR_NOT_EQUAL,实在不知道是什么原因。前些日子装了Bon Echo Alpha 1,除了DOM Inspector以外的所有extensions都因为不符合兼容性而被浏览器自动禁止了,而蓝屏现象依旧,所以排除extensions出问题的可能。但一天到晚对着傻缺IE6心里总是不痛快,最近冒险观察,发现好像是在打开网页里内嵌的多媒体对象(除了Flash)时容易蓝屏,不自觉的就怀疑到那些Real和QuickTime的plugins上来,因为新机器的声卡驱动好后会有多个声音I/O设备,不知道是不是因为这个才导致找错了设备(不懂,而且又无法得到源码,只能瞎猜了,但愿没有侮辱他人智慧的嫌疑…)。Mozilla系浏览器的plugins装载很灵异,看了眼相关的文档,貌似是Gecko这层就可以装载plugins,到了上面Suite/SeaMonkeyFirefox这层还可以自主决定装载哪些plugins,而指定具体可以从哪里装载哪些plugins的配置又分散到注册表和.js配置文件里面,.js配置文件又有Gecko运行时和具体浏览器之分,此外Gecko和Suite/SeaMonkey/Firefox还有默认用来放置plugins的目录……搞来搞去,到处都是配置,到处都是plugins文件,直弄的我草木皆兵,在GDS里狂搜半天…
计算机软件的覆盖面太广大了,在不同平台上搞开发的人之间的诧异也太大了。熟悉Mozilla系浏览器、熟悉Gecko的人肯定知道plugins是被谁从哪些个文件装载进来的,而我只能瞎蒙碰碰运气…好在plugindoc项目的文档很有帮助
现在总算是把除了Flash播放器和JRE以外的plugins全部卸载掉了,但愿能和Firefox美满的多相处几天,阿门。

Performancing MSN Spaces

No Comments

久闻Performancing的大名,就是一直懒得装上这个插件(也因为原先的老爷机禁不住多少FF插件),今天总算没有忘记,把它请了来为我的FF显显灵。
不知不觉的用了一阵MSN Spaces,竟然没有自责自己又没逃出微软的手掌心。习惯了用MSN Spaces无非因为它的触手可及,无论是没法自定义的外观主题,功能垃圾又狂吃CPU的RTF编辑器,还是乱七八糟不知所谓的配置选项,没有一个能留得住在其他BSP安过家得blogger,而对我而言,MSNM是每天都要开得,而什么时候想聒噪几句,就点一下它那个绿色的被人称作3P的图标,实在方便得很。第一次感觉自己成为了自己讨厌得那种人:懒蛋。做应用的时候总是觉得一些事情都是理所当然的:“没有通过Cookie记住用户的功能”,“那再登陆呗,哪来那么懒的人啊~”;“这个链接还是在新窗口打开吧”,“右键->N”,etc.。而自己现在跑这里来聒噪,实在是因为懒得去BSP那里登陆 ——实际上登陆一次就够了,我就是懒得把管理Blog的页面收藏起来……
这年头,一切都用基于Web的应用,究竟现不现实?甭说几个流行一些的BSP被GFW掉,也甭说莫名其妙地“该页无法显示”,单是这抽风一样的网速,实在让人担心。Java WebStart算是个比较狠的角色了吧?我这里攒了一堆.jnlp文件,没几个能正常完成加载然后启动的。看一些视频或者新闻有时掠过国外一些正在上网的计算机的屏幕,几乎所有链接点开之后新页面就立即呈现,实在舒坦,不知道什么时候才能这样舒坦一把。最近反正就算SOHO了,还是桌面应用方便一些。
另感谢郁也风这篇Blog,让我少兜了一个圈子。