Firefox 扩展 Sokoban.WS Tools

作者:杨超

本文地址:http://sokoban.ws/blog/?p=609

我大概是从2010年春起使用 Firefox 作为我的常用浏览器。Firefox有很多性能都比IE强。比如地址栏所支持的URL长度至少8000字符以上,远远大于IE的大概2000字符的限制。Firefox 对HTML5的支持较好,我编写的网页程序SokoPlayer HTML5有些功能就只能在Firefox下使用。后来又发现Firefox有很多好用的扩展(extensions/add-ons)。我必装的扩展主要有:显示网站服务器所在国家等信息的Flagfox,显示网站全球排名的Alexa Sparky,网页截图工具Abduction!,等等。

前些天,我使用TinEye的相似图片搜索工具时,发现他们也提供一个Firefox扩展。安装该扩展后可以在任何一个网站图片直接点击右键,选择Search Image on TinEye直接搜索,十分方便。于是,我产生了给推箱子写一个插件的想法。推箱子迷们常常在论坛(如魔方吧推箱子版)和邮件中交流和分享新的关卡。大家交流时都是用标准的XSB文本关卡格式,这种格式被所有主要的推箱子软件支持,只要复制粘贴就可以了。我编写的在线推箱子程序SokoPlayer HTML5 也支持读入这种格式。即便如此,还是需要点击好几下鼠标才能把网页中的XSB格式关卡读入程序。如果能在选中XSB文本后直接用右键菜单把关卡载入在线的SokoPlayer HTML5程序,就可以节省好几步操作。而且SokoPlayer HTML5已经具备了从URL中读入关卡信息的功能,剩下的就看Firefox扩展如何编写了。

于是我花了些时间查阅了网上的Firefox扩展的技术文档和快速入门。我发现Firefox的扩展从技术上并不复杂,原来也是用 JavaScript编写的。简单地说,Firefox扩展主要由两部分构成。第一部分是扩展的界面。Firefox的扩展可以以右键菜单,地址栏,状态栏(扩展栏)或者选项对话框等标准形式出现。扩展可以采取其中的一个或者多个作为界面,而界面是用基于XML语言的XUL格式来描述的。第二部分就是扩展的代码。用户在通过上述各种形式的界面调用扩展时,扩展如何处理。这一部分就是用 JavaScript 语言来编写了。这和HTML+JavaScript的工作原理类似。最后,把这两部分加上一些额外的描述文件一起压缩成一个ZIP文件,把文件后缀由.zip改为.xpi,一个扩展就制作完成了。这就是Firefox扩展的原理。

知道了Firefox扩展的基本框架,我再查阅了Copy As Plain Text, JiaThis, TinEye等扩展的代码。在这基础上,我用了大概一天多的时间,完成了一个简单的Firefox插件,实现了我前面提到的想法:在页面中选中XSB关卡,然后调用右键菜单在新标签中打开SokoPlayer HTML5在线程序,并直接载入XSB关卡到程序中去。我把扩展命名为 Sokoban.WS Tools,虽然目前只有一个功能,但以后有新功能的想法还可以继续添加。

这个扩展我已经提交到Mozilla Add-on for Firefox了,可以从以下地址安装:https://addons.mozilla.org/en-US/firefox/addon/sokobanws-tools/

下面分别是扩展使用时和选项对话框的截图。

右键菜单:

选项对话框:

此条目发表在 推箱子, 编程 分类目录。将固定链接加入收藏夹。