论坛首页 Web前端技术论坛

Firefox extension开发案例

浏览 7956 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-09-29  
Author: jack
original: http://jack.lifegoo.com/?p=30

问题的由来: 我和一个朋友聊起BBS和Blog的异同,他说了偏爱BBS的一个理由: 在BBS客户端里面,如果有很多thread/comments, 人只要往下读,后面的内容会自动刷新。但是网页是做不到的,当用户用鼠标或者page down来滑动scroll bar的时候,下面的内容如果有更新它是不能及时显示的,一定要借助手工的刷新。我也是面临同样的问题,现在blog上的comments我往往延时很多才去阅读,当然这就给讨论问题制造了小小的障碍。那么可以尝试去改善这种体念么?从网站统计数据来看,访问"Software as Art!"的用户中有50%是使用Firefox/Mozilla。那么就先改善这部分用户的体念吧。

问题的解决: 现在blog一个往外扩展的手段是RSS feed, 用户通过订阅blog的RSS而来主动跟踪一些话题和讨论,那么如果RSS的订阅嵌入到浏览器中会怎么样呢?甚至可以间隔一定的时间去扫描一次RSS源。换句话说,开发一个基于浏览器的RSS Reader, 把原来"拉"的模式转变成"推"的模式。问题分析到这里已经变得很简单,XUL可以很方便的来扩展Firefox. 加上XUL本质就是HTML, CSS, XML, Javascript的结合体,所以自动请求数据部分我们可以采用XmlHttpRequest.

本文不打算详细论述Firefox extension的开发过程,有兴趣的可以在XUL社区里找到足够多的资源来帮助完成开发。考虑到RSS只是一个引导性的介质,所以不打算占用浏览器的剩余空间,我选择了右下角的status bar. 内容是定时抓取的,他们在status bar里面显示出来,如果读者对某个讨论比较感兴趣,那么他可以点击内容,Firefox会自动打开所在页面。最后的界面如下:


方案的设计: 方案设计出来一个小组件,我把它叫做 RSS Go!. 是基于BSD License的open source项目。核心内容主要有两点:

   1. XUL的定义。rssgo.xul的定义如下:
     
      从代码可以看出,一个id为"statusPanel"的statusbarpanel被定义,它的初始表现值是"Loading......". 同时captain.js被引入,它主要负着一些事件监听和数据的抓取,分析。
   2. 事件的处理。capatain.js里面的Javascript和普通的Javascript都是一样的。对于内容抓取,它先创建一个 XmlHttpRequest, 然后异步去GET, 用callback函数来分析取回的数据。同时给statusPanel注册上onclick的时间监听器,如果用户点击,那么浏览器将载入对应URL的页面,并且focus on. 另外,因为我们把entities RSS和comments RSS都考虑进去,我们加快entities RSS的刷新速度,同时首先载入的也是entities RSS.

最后可以通过rssgo.xpi (cross platform installer)来安装这个extension. 项目的源代码可以通过这里下载。

欢迎好的想法和建议:)
   发表时间:2006-09-29  
没明白是干什么的,我安装了这个extension 发现没有option可用,点一下就访问你的blog了, 一头雾水...
0 请登录后投票
   发表时间:2006-09-29  
eyejava 写道
没明白是干什么的,我安装了这个extension 发现没有option可用,点一下就访问你的blog了, 一头雾水...
现在还是一个demo把,是rss notifier
0 请登录后投票
   发表时间:2006-10-25  
投个精华,鼓励一下。

研究XUL的人太少了
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics