Showing posts with label Jetpack. Show all posts
Showing posts with label Jetpack. Show all posts

Thursday, November 12, 2009

Jetpack 0.6: 爱与恨之歌

Jetpack 0.6在10月7日隆重发布, 这一版本带来了两个激动人心的新特性: 菜单和用户配置. 意味着现在可以很方便地添加菜单, 不管是系统菜单, 还是上下文菜单. 而"用户配置"的加入也使得Jetpack扩展对用户来说拥有了可定制性. 这两个功能刚好我都需要用在SNS All in One的下一个版本里, 于是从Jetpack 0.6一发布就开始折腾, 弄了这么几天, 结果是越弄越没有信心. 第一件让人烦心的事我在[解决Jetpack 0.5以上版本在Shiretoko中出错的问题]中已经提到了, 不过我换成Firefox 3.5也就把问题解决了. 接下来才是真正恼火的事情, Jetpack 0.6的jQuery很是抽筋, 导致我以前的代码都得修改, 而且错误也是莫名其妙, 什么"context.createElement is not a function"之类的. 这里有人也遇到了同样的错误, 并且指出了怎样解决, 我就照着别人代码的样子试着改了一下我的代码, 解决了一部分问题, 但还有一部分是整死也解决不了, 这不禁让我开始怀念美好的Jetpack 0.4, 现在的bug真是多.

鉴于Jetpack现在的不稳定表现, 暂时停止SNS All in One的开发, 专心弄我的另一个小玩具, 那些新特性也只有等以后再添加了.

P.S. 今天在Jetpack的邮件列表里发现居然有人看了我的那篇[解决Jetpack 0.5以上版本在Shiretoko中出错的问题], 估计是用Google翻译了再看的.

SNS All in One 0.0.3 Released, 支持Jetpack 0.6

这个版本针对刚刚发布的Jetpack 0.6做了一点修改, 主要是因为Jetpack 0.6的API有点抽筋, 这个我会在下一篇文章中讲到. 此外还修复了一个豆瓣的链接bug.

由于Mozilla已经推出了官方的Jetpack扩展网站: Jetpack Gallery, 以前那个在Userscripts.org上的页面也就停止更新了, 全面转向新的页面: http://jetpackgallery.mozillalabs.com/jetpacks/80, 请以前安装了SNS All in One的各位先把以前的卸载了, 再到新的页面上安装. 卸载方法为: 打开"about:jetpack"页面, 在"Installed Features"标签里找到"SNS All in One", 点击"uninstall"即可. 然后升级到Jetpack 0.6, 到新的页面安装.

如果你是第一次使用SNS All in One, 推荐在安装后阅读"SNS All in One 用户指南".

更多版本信息, 请参阅"SNS All in One Release Notes".

Monday, November 9, 2009

解决Jetpack 0.5以上版本在Shiretoko中出错的问题

2009.10.11, 22:56更新:
经过测试, 发现Shiretoko中Jetpack的某些错误也存在于Firefox 3.5中, 看来这回又是Jetpack的问题了.

2009.10.9, 22:00更新:
经过实际测试之后发现用下面的方法还是不能完全修正Jetpack的错误, 比如jQuery的部分API可能失效, 暂时不推荐在Shiretoko中使用Jetpack 0.5及以上版本.

恐怕很多人还没听过Shiretoko, 一般不用Linux的话是不会察觉到Firefox其实还有一个名字. Shiretoko是Firefox的开发代号, 除了logo少了那只趴在地球上的狐狸外, 其它和Firefox没有差别. 我第一次遇见是在使用Arch的时候, 当时使用源安装的Firefox, 结果打开却叫做Shiretoko, 还以为安错了. 然后我现在使用的Ubuntu 9.04源里的Firefox 3.5也是叫做Shiretoko, 这其实没什么, 只是名字不同而已, 本质都是一样的, 可没想到这会影响Jetpack的使用.

以前我写过一篇叫做[SNS All in One在Jetpack 0.5中失效]的文章, 原因是在Jetpack 0.5中侧边栏无缘无故地消失了, 并且"about:jetpack"页面也有显示错误和链接点击错误, 如下图:
Jetpack Error
开始还以为是Mozilla官方在更新的时候出错了, 因为Jetpack 0.4都是好的. 前天Jetpack 0.6出来了, 当我更新完毕后发现错误依旧, 就开始怀疑是否仅仅是我这里有问题. 打开"Error Console", 一一排查起来.

进入"about:jetpack"页面的第一个错误是"XULApp is not defined", 指向了"file:///home/xiaogaozi/.mozilla/firefox-3.5/cavgighj.dev/extensions/jetpack@labs.mozilla.com/modules/xulapp.js Line: 127", 打开"xulapp.js", 简单分析了下代码, 发现如下的条件语句:
if (Application.name == "Firefox")
{
    XULApp = { ... };
}
else if (Application.name == "Thunderbird")
{
    XULApp = { ... };
}
看来是先判断了程序的类型后再给"XULApp"赋的值, 怪不得在我这里会出错, 因为我的是Shiretoko, 囧. 模仿前面的代码, 再写一个"else"分支, 把在"Firefox"分支中的语句都放到里面:
if (Application.name == "Firefox")
{
    /*
     * Firefox分支
     */
    XULApp = { ... };
}
else if (Application.name == "Thunderbird")
{
    XULApp = { ... };
}
else
{
    /*
     * 这里的代码与'Firefox分支'相同.
     */
    XULApp = { ... };
}
重启浏览器就一切正常了, 也终于可以享受Jetpack 0.6带来的新功能了.

P.S. 前天在发布Jetpack 0.6的同时, Mozilla也正式公布了Jetpack扩展的官方网站: Jetpack Gallery, 终于有了归属地了, 过几天会发布新的SNS All in One, 到时候也会转过去.

Thursday, September 17, 2009

SNS All in One在Jetpack 0.5中失效

今天升级到了最新的Jetpack 0.5, 结果发现SNS All in One失效了, 侧边栏也不见了. 经过一番调查, 发现是Jetpack 0.5自身的问题, 并且也有人和我一样遇到了类似的问题, 只能等待Mozilla来解决了. 如果已经升级到0.5了, 卸载之后重新安装Jetpack 0.4即可正常使用.

Saturday, August 15, 2009

SNS All in One 0.0.2 Released

校内改名人人了, 以前的http://m.xiaonei.com/也用不了了, 这个版本把校内的网址改成了: http://m.renren.com/, 如果你以前安装的时候勾选了"Auto-update this feature", 那过一段时间Jetpack会自动更新的, 可以不用管. 或者可以到这里重新安装最新版本.

Friday, August 7, 2009

SNS All in One 0.0.1 Released

以前总在想, 能否像TwitterFox那样方便地更新我的校内, 查看校内好友的新鲜事和豆瓣的友邻广播呢? 我需要实现这样一种功能, 能够在我想看的时候很方便很快速地看到, 而其它时间则隐藏起来. 自从了解了Jetpack, 我就在思考着能否实现这个想法. 经过几天的编写, 就有了SNS All in One这个Jetpack扩展.

SNS All in One是一个Jetpack扩展, 主要使用Jetpack的slide bar (侧边栏) 特性, 现在实现的功能就像上面说的一样, 可以查看手机校内的所有内容, 以及豆瓣的友邻广播. 截图如下:

SNS All in One - 豆瓣
查看豆瓣友邻广播

SNS All in One - 校内
查看手机校内

功能很简单, 点击侧边栏的图标可以刷新页面. 由于侧边栏不能复制链接, 可以选择拖动链接到Firefox主窗口中打开. 不过需要注意下, 这个扩展只支持Firefox 3.5及以上版本.

欢迎提供各种反馈, 请将意见提交到Google Code或者Userscripts.org的Discussions页面上, 也可以给我发送邮件: gaochangjian[at]gmail[dot]com, Because it's your web.

Introduction to Jetpack

Jetpack
JetpackMozilla Labs推出的一种全新的Firefox扩展方式, 官方的一句话很好地解释了Jetpack的作用:
In short, Jetpack is an API for allowing you to write Firefox add-ons using the web technologies you already know.
这篇文章旨在全面但不深入地介绍Jetpack的特性, 帮助用户和开发人员更好地了解Jetpack.

抄袭下可能吧的经典绿条, 希望Jason Ng同学不要介意.

一、怎样获得Jetpack?

不管你是运行还是开发Jetpack扩展, 都需要首先安装Jetpack的Firefox扩展 (这句话有点绕, 可以把后一个扩展看作是Jetpack的API包), 就像平时安装Firefox扩展一样, 下载安装完毕后重启Firefox就行了.

二、对于普通用户, Jetpack该怎样使用?

只要你安装了刚才的扩展, 当打开包含Jetpack程序的页面时Firefox就会自动提醒你是否安装:
Install Jetpack

点击"Install..."以后, 可能会转到一个Firefox的警告页:
Jetpack Warning
不用紧张, 只要你是从可信赖的站点安装的就没有问题, 这时需要等到代码加载完毕, 然后就可以点击按钮安装了, 也可以勾选上"Auto-update this feature", 以便自动更新.

当显示"Installation Successful"之后, 一个Jetpack扩展就算安装完毕了, 这同时也是Jetpack不同于普通Firefox扩展的一点: 安装后不需要重启, 删除也是.

在哪里查看所有安装的Jetpack扩展呢? 请打开about:jetpack页面, "Installed Features"里就显示了全部信息, 点击"uninstall"即可删除扩展.

由于现在Mozilla还没有专门为Jetpack建立扩展页面, 所以目前推荐到Userscripts.org的Jetpack页面查找扩展.

三、开发人员指南

如果你是一名Web开发人员, 或者有过Web开发的经验, 那你基本上已经具备了开发一个完整的Jetpack扩展的能力. 开发Jetpack扩展所需的技术和工具有: JavaScript, HTML, CSS, jQuery, Firebug, 以及你喜爱的编辑器.

如果你想快速直观地了解Jetpack的功能, 可以观看官方的这个视频:

Mozilla Labs Jetpack - Intro & Tutorial from Aza Raskin on Vimeo.

Jetpack现在还处于发展阶段, 只能实现一些比较小的功能, 比如对剪贴板 (clipboard), 消息提示 (notification), 侧边栏 (slide bar), 状态栏 (status bar), 菜单栏 (menu bar), 标签 (tab)等的操作. 同时, Jetpack包含了jQuery和封装好的Twitter库, 以及实现JS的跨域访问.

about:jetpack里有完整的API索引与示例, Jetpack Demos也包含了各种示例, MozillaWikiLabs/Jetpack版块有很多关于Jetpack的资料和示例代码, 还有Jetpack的Google Groups与IRC (#jetpack@irc.mozilla.org) 供大家讨论.

四、结语

Userscripts.org网站底部有这样一句话: Because it's your web. 期待Jetpack的发展, 让Web变得越来越舒适.