Tabbed Browser events and JS:
http://developer.mozilla.org/en/docs/Code_snippets:Tabbed_browser

DOM Events (note the mutator events):
http://en.wikipedia.org/wiki/DOM_Events

I'm going to assume that keeping references to DOMElements are
bad. :-(

* javascript.options.showInConsole = true. Logs errors in chrome files
  to the Error Console.
* nglayout.debug.disable_xul_cache = true. Disables the XUL cache so
  that changes to windows and dialogs do not require a restart. This
  assumes you're using directories rather than JARs. Changes to XUL
  overlays will still require reloading of the document overlaid.
* browser.dom.window.dump.enabled = true. Enables the use of the
  dump() statement to print to the standard console. See window.dump
  for more info. You can also use nsIConsoleService from privileged
  script.
* javascript.options.strict = true. Enables strict JavaScript warnings
  in the Error Console. Note that since many people have this setting
  turned off when developing, you will see lots of warnings for
  problems with their code in addition to warnings for your own
  extension. You can filter those with Console2.

@todo [3] Firemacs conflict in FF 2.0.0.10
@todo [9] An API for untrusted web pages to use. Is this a security problem?
