XBLinJS Homepage

XBLinJS is an implementation of XBL-style widgets in pure, cross-platform Javascript, DOM 1, and CSS 1. (Higher levels of those technologies may be used, at the corresponding cost in cross-platform compatibility.) It provides the benefits of XBL in cross-platform HTML, and experimentally, provides a most-feature replacement for XBL in Mozilla development. (XBLinJS can be used selectively, too; you need not convert an entire existing XBL application over.)

In addition to that fundamental capability, XBLinJS implements several web widgets for use in web pages, which may be seen on the demo page if you are using a compatible browser.

XBLinJS is targetted at experienced Web developers looking for a framework to organize and abstract out large chunks of dynamic, client-side code, often with AJAX-style code. XBLinJS in particular is designed for situations where you know the user has Javascript turned on and you do not need to worry about "graceful degredation", which mostly happens in corporate/enterprise environments. It is not for casual website operators or people looking for quick code hacks for their webpages. (You are welcome to poke around and use what you can, of course, but be aware you are not the target audience.) Later versions of this library will most likely address that need.

Vital links:


I believe the Widget interface is now stable, though implementation may continue to be tweaked. Various widgets are always at various states of readiness.

The implemented widgets should be considered lightly tested; in the browsers I can test them in, they are being used at a near-production level, but I have not tested them in Konqueror, IEs before 6, etc.

Detailed Summary

XBL allows you to bundle up behavioral code with a specification of what the widget contains (panels, buttons, etc.) as one unit, very analogous to how OO bundles data with code. In fact, the cost/benefits tradeoff is almost identical to OO vs. conventional procedural. XBL is a powerful idea, but it has been commonly observed that XBL the technology does little that Javascript can't do, other than tap into the extra widgets that XUL has.

XBLinJS provides a Javascript library that makes it easy to obtain the advantages of this containment while still working in pure Javascript and standard DOM, making it possible to obtain the vast majority of the benefits of XBL across all browser platforms. Rather than "bindings", we talk of "widgets" (and the .js files are generally based on that name).

In fact, anything based on DOM, Javascript/ECMAscript, and the DOM event model can use XBLinJS; currently it is working in cross-platform HTML and experimentally as a direct replacement for XBL with XUL.

XBLinJS also brings some unique advantages that pure XBL does not have:

This is the sedate, polite version. A more detailed indictment of Mozilla's XBL implementation is available here; those who simply want to Get Work Done should be warned that while that is not purely a rant (in general, a ranter just complains and does not provide solutions, whereas I am at least trying to provide solutions via this library), it still strongly resembles one. I prefer to think of it more as a "strongly worded warning".

Currently, the Widgets shipping with this library are rather limited in scope, excepting the ported Javascript Console. This is because the focus has been on getting the library solid and feature-rich enough to be pleasant to use. In my own custom code, I have some quite sophisticated Widgets, they just aren't suitable for public consumption. Target developers are those who will be creating their own Widgets for their own apps.


Additional ideas the project manager has no intention of pursuing but would make interesting additions:

Jerf.org : Programs & Resources : XBLinJS Home


Current Section Links




Search Jerf.org

Search WWW
Search jerf.org