您的位置:首页 > 其它

Firefox扩展开发之二

2006-07-15 01:44 183 查看
开发插件实在是很痛苦的一件事情,因为他需要用到Firefox的chrome系统,而每次更新了代码之后,都需要重新载入chrome才能起作用。 一般情况下要重启chrome就需要重新启动firefox,还好有人已经发现这种痛苦,所以开发了一个Extension Developer Manager,里面提供了好几个工具,用的最多的是reload chrome,用来在不重启firefox的情况下,重新载入chrome,第二个是javascript shell,他可以访问任意一个当前的firefox窗口。而要完成插件开发,一般还要用到Console,因为很多调试信息都需要通过这看,如果没这玩意,那估计每次都得用alert了。至于DOM Inspector一般用不上,因为如果你要象greesemonkey那样,获取当前页面的HTML DOM的话,一般都只能通过事件来实现,然后hack到她的appcontent里面,这东西在DOM Inspector里面没有,所以,你通过这种方式修改了DOM树,通过DOM Inspector是看不出来的,而为了验证你有没有修改成功,现在我的方法就是靠javascript shell。
关于DOM,我搞了足足两天,才算搞出个所以然来,由于firefox是用XUL写的,而XUL也定义了DOM,所以,一般情况下你在扩展里头,或者javascript shell里面通过document获取的仅仅是XUL的DOM,要获取browser里面的DOM,我现在探索出来的有两种,一种是greesemonkey那样,用事件,每次都监察DOMContentLoad事件,这个方法很危险,例如如果一个网页他有多个frame,那么这个事件就会发生多次,而由于greesemonkey只是在加载的时候用user script对DOM做一次处理,所以这个问题不是特别大。不过,如果我要做的是能够多次操作DOM树,所以,就必须要得到当前窗口的当前正在显示的DOM,为了获取这冬冬,我足足用了2天,google了所有能想到的关键词,把XUL planet和MDC上面的文章都翻了个遍,最后终于在moznet的irc上面问到人了,原来要得到这东西根本不需要用事件,只要通过content.document就可以得到了。实在不容易啊。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: