飘雪

C++博客 首页 新随笔 联系 聚合 管理
  31 Posts :: 0 Stories :: 60 Comments :: 0 Trackbacks

    我平时上班时喜欢在线听个收音机。当然了,网页版的在线收音机不考虑,因为总要打开一个网页,经常一不小心就关了。以前用过龙卷风收音机,但是经常关闭程序之后进程不结束,而且它自带的电台地址都不公开,看着心烦。作为一个firefox的忠实用户,自然希望用一个firefox扩展来实现收音机功能。在Firefox Add-ons网站上找了找,还真有这么一个插件,其中的收音机功能能够满足我的需求,但它带了太多的私货,有天气预报、rss阅读,尤其是带了一个搜索框,还不能关掉。本来firefox已经自带了一个搜索框,我装的google toolbar上也有一个,再来一个搜索框,整个界面没法看了,最终还是放弃了这个插件。
    身为一个刀客...咳,错了,身为一个Geeker,这种情况下自然别无选择,只好自己动手了。虽然以前并没有做过firefox的扩展,不过我想这应该难不倒一个Geeker。
    首先自然是来到mozilla的关于扩展/插件开发的官方网站Extension development,文档不错,大致看了看,很简单嘛。说起来就是用XUL定义界面,用javascript响应事件,然后用几个配置文件把这些串起来。XUL可以现学现卖,不行咱还可以从别人的扩展抄嘛,javascript自然不在话下,虽然很久没看过了,写几个简单函数那还不是小菜。网站上有现成的Tutorials,不到半小时,一个界面雏形连带基本的事件响应就出炉了。界面很简单,播放、停止、音量按钮各一个,再加一个选台框和一个信息显示栏。
     接下来就是收音机功能了。思路照样也很简单,用javascript创建一个Media Player对象,然后用这个对象播放mms流就可以啦,核心代码就几行:

var url ="";
var wmp = new window.GeckoActiveXObject('{6BF52A52-394A-11d3-B153-00C04F79FAA6}');
wmp.url 
= url;

    写完收工,马上测试,我靠,见鬼了,GeckoActiveXObject出错,错误是:uncaught exception: [Exception... "Unable to create an instance of the desired COM classCOM Error Result = 80004005"  nsresult: "0x80570039 (NS_ERROR_XPC_COM_CREATE_FAILED)" 。又仔细检查了一遍代码,没错呀,应该就是这么写的。
    这下可真成卡门了,我迷迷糊糊觉得这应该跟权限、策略设置什么的有点关系,可是不知道从哪儿下手,google上翻了一圈,也没找到点建设性的意见。没办法,又打开我装的其他扩展,看别人是怎么搞的,其中一个跟我想要的功能类似的一个扩展,光js文件就有4万多行,UltraEdit打开都一顿一顿的,也看了一遍,还挑出其中的代码测了一下,都不行。在这儿就卡了一下午,只好翻别人的插件,希望能找到点头绪。最后还真翻出来点东西,在一个插件下发现有components目录,里面有两个文件,npmozax.dll和nsAxSecurityPolicy.js,从文件名看起来似乎跟安全策略有关,打开看了看,没啥特别的,一不做二不休,把整个components目录拷到自己的目录下,试了试,嘿嘿,行了。真是柳暗花明又一村啊,我觉得关于安全策略之类的mozilla的网站上应该会讲到吧,也许是我不仔细,没有找到,但是居然用拷贝两个文件的方法解决了,具体原理以后有时间再看吧,先能用再说。
    最后,秀一下我纯手工打造的收音机,虽然目前难看了一点,但是能用,以后有空再改得好看点
 

    今天光搞这个该死的权限就用了一天,工作进度落下一大截,明天一定好好工作。

posted on 2009-01-08 23:54 飘雪 阅读(2113) 评论(8)  编辑 收藏 引用

Feedback

# re: 自己动手写firefox扩展(1) 2009-01-09 00:47 鬼话
我也喜欢在线听收音机,楼主的DIY精神很嘉,虽然花费一天时间,也很值得,期待下篇  回复  更多评论
  

# re: 自己动手写firefox扩展(1) 2009-01-09 09:06 飘雪
@鬼话
下一步打算改得好看一点,操作便利一点  回复  更多评论
  

# re: 自己动手写firefox扩展(1) 2009-01-09 10:37 phinecos
没用到XPCOM,还得努力的,呵呵  回复  更多评论
  

# re: 自己动手写firefox扩展(1) 2009-01-09 10:42 飘雪
@phinecos
这只是一个简单插件,满足自己的基本需求,以后说不定能用上  回复  更多评论
  

# re: 自己动手写firefox扩展(1) 2009-01-09 10:48 浪迹天涯
呵 firefox就该这么折腾...有时间好好向楼主学学  回复  更多评论
  

# re: 自己动手写firefox扩展(1) 2009-01-09 10:58 飘雪
@浪迹天涯
我这也是瞎折腾,正好也了解一下firefox的扩展体系  回复  更多评论
  

# re: 自己动手写firefox扩展(1) 2009-01-09 11:17 飘过
bs一下你的搜索引擎  回复  更多评论
  

# re: 自己动手写firefox扩展(1) 2009-01-09 11:28 飘雪
@飘过
啥搜索引擎?你是说我的firefox布局,是bs我的搜索引擎设置是baidu吗?

事情不是你想的那样,因为我装了google工具栏,大部分搜索都是通过google工具栏进行的。所谓左谷歌,右百度,百度只有偶尔谷歌被抽风时才用。
  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理