阶段性总结--各浏览器下插件开发(未完待续.)

前段时间一直在做各浏览器下插件开发的工作,主要包括:chrome、firefox、sogouExplore、maxthon3和opera这几款浏览器、其他的浏览器基本都是chromium和trident加个壳子,而且开放的API也是从chrome上继承过来的,虽然让人觉得比较恶心,但是确实省了很大一部分的开发时间。
 
插件主要包括三大块:
popup页面:主要进行登录和显示详情的页面
contentScript:注入到当前content中,对当前页面分析并获取的相关信息,例如:是否有选中、是否可以进行智能提取等等
background:主要负责接收来自popup页面和contentScript中发送的消息,并进行处理

Chrome:

 自从用了就爱不释手的浏览器,确实比以前那些浏览器要强多了,速度不是一般的快。
优点:
  • 完善的API和使用文档。提供的扩展API比较全面,而且还在不断的扩充功能,能想到的功能,基本都可以用google提供的API来完成。
  • 扩展内部机制较好。用起来也比较简单易上手。
缺点:调用本地功能比较麻烦,但是可以使用NPAPI来辅助,官方不推荐。

Firefox:

 优点:
  • 功能强大:XUL + XPCOM + javascript,基本能实现任何功能,包括chrome无法完成的本地功能;
  • 扩展审核比较严格:测试人员比较负责,会把你的代码和扩展完全的走一遍,然后找到你代码中会出问题的地方,在邮件里反馈给你。对我这样的新手来说,也算是有一个传授经验的人了。
缺点:
  • 学习成本较高,尤其是对我这种英文烂的人来来说,因为只有英文文档,很多东西都是硬着头皮看的。
  • 审核时间比较长;一般初次审核,都得一星期以上,我开始运气比较不好,初审等了大概两周,结果还被拒绝了。

Opera:

优点:
  • API文档比较完善,而且都配有例子
  • popup页面可以直接使用background页面中的object,省下了通信的处理,感觉还比较方便。
 
缺点:
  • 调试模式下,很多功能都有问题。例如:popup页面,在blur的时候,不自动隐藏,调用window.close()仍然不可以,还以为需要特殊的接口,结果打包安装发现,自动隐藏没问题。
  • 国际化感觉比较麻烦,Opera是把每个需要国际化的界面都放在单独的语言包下面,这样对我这种新手来说,代码结构不好,就会造成很大的麻烦

注意:

 

  • include的文件中,不能直接调用未声明的变量,需要用typeof判断,否则报错;例如jQuery是否加载不能直接使用if(!jQuery){……},需要用if (typeof jQuery === 'undefined') {……}
 

Maxthon3:

优点:

  •  和开发人员沟通较容易,QQ群里面直接就可以找内部的开发人员帮忙,感觉还是挺好的,国内的,感觉服务还都不错

缺点:

  • API太不完善,而且很多API实现的有问题。例如:事件监听句柄,是监听全局插件的...无法做到只监听自己..;popup页面隐藏时,后台发送给他的请求,还是能接收到。
  • 文档介绍也比较简单,很多限制没有写到文档里面,都是自己碰之后,耽误了几个小时候才发现的,比如:提供的消息机制,有大小限制,数据大小不能超过16K。如果超过也不报错
 

Sogou:

 改了改chrome的API,而且没有实现好多功能。
 
 
第一次写,感觉比较乱,以后更新的时候,对各浏览器也会有更深的了解,再逐渐完善这个小总结。
 
最后送一下传送门,各浏览器的API地址:
 
 





posted @ 2012-10-30 22:42  rechie_lee  阅读(272)  评论(0编辑  收藏  举报