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]
.
location
console
info
log
arn
error
exception
logFromCaller
$
andjQuery
- All of the standard jQuery methods.
jetpack
andJetpack
tabs
(the listed array methods are defined just to throw errors stating that they are unsupported)focused
onReady
isClosed
url
contentWindow
contentDocument
raw
(the XUL<tab/>
element)focus
close
toString
_unload
open
toString
onReady
unbind
pop
push
reverse
shift
sort
splice
unshift
- tab indices (0, 1, 2, 3…) that follow the same structure as
jetpack.tabs.focused
.
unload
notifications
show
lib
twitter
Twit
getStatus
getTwitFriends
getTwitInfo
getTwitLatestStatus
getTwitTimeline
statusBar
append
track
(has to do with memory tracking)json
(No idea why this doesn’t follow Firefox 3.5’s JSON implementation naming at all)encode
decode
sessionStorage
setInterval
clearInterval
setTimeout
clearTimeout
addStatusBarPanel
(throws “addStatusBarPanel() has been moved to Jetpack.statusBar.append()”)