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
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
- All of the standard jQuery methods.
tabs(the listed array methods are defined just to throw errors stating that they are unsupported)
- tab indices (0, 1, 2, 3…) that follow the same structure as
track(has to do with memory tracking)
json(No idea why this doesn’t follow Firefox 3.5’s JSON implementation naming at all)
addStatusBarPanel(throws “addStatusBarPanel() has been moved to Jetpack.statusBar.append()”)