Mozilla Labs’ latest creation, Jetpack, is a great way to extend Firefox. It currently has a poorly documented API that doesn’t mention all of the public methods and fields. Due to Mozilla Labs’ decision of not putting the API documentation on MDC or the MozillaWiki, I cannot update the documentation myself. Therefore, I will list all of Jetpack’s documented and undocumented features as of version 0.1.2 in this blog post.
(Not) Assigning Properties
You can’t do things like jetpack.tabs.focused.contentWindow.foo = "bar". I find this much too restrictive, as it hinders a developer’s ability to make an API for a webpage to communicate with a jetpack to do things that need more privileges. Ironically, it seems that jetpacks have full access to Firefox’s XPCOM (Components.*, ect.) which means, with a little hacking, it may be possible to bypass this restriction. The follow code shows an example of getting an nsIAlertsService and using it instead of jetpack.notifications.show.
var body = "Some text", title = "Notification", icon = "http://code.eligrey.com/favicon.ico", classObj = Components.classes['@mozilla.org/alerts-service;1'], alertService = classObj.getService(Components.interfaces.nsIAlertsService); alertService.showAlertNotification(icon, title, body); |
Every Field & Method
The following is every enumerable field and method that I found in the jetpack API. You can see what arguments a function takes and how it works by just converting it to a string as these functions will show their code bodies and not just [native code].
locationconsoleinfologarnerrorexceptionlogFromCaller
$andjQuery- All of the standard jQuery methods.
jetpackandJetpacktabs(the listed array methods are defined just to throw errors stating that they are unsupported)focusedonReadyisClosedurlcontentWindowcontentDocumentraw(the XUL<tab/>element)focusclosetoString_unload
opentoStringonReadyunbind
poppushreverseshiftsortspliceunshift- tab indices (0, 1, 2, 3…) that follow the same structure as
jetpack.tabs.focused.
unloadnotificationsshow
libtwitterTwitgetStatusgetTwitFriendsgetTwitInfogetTwitLatestStatusgetTwitTimeline
statusBarappend
track(has to do with memory tracking)json(No idea why this doesn’t follow Firefox 3.5’s JSON implementation naming at all)encodedecode
sessionStorage
setIntervalclearIntervalsetTimeoutclearTimeoutaddStatusBarPanel(throws “addStatusBarPanel() has been moved to Jetpack.statusBar.append()”)