Wie man das Laden einer Seite abfängt …

Ohne Witz. Seit 4 Wochen doktor ich daran rum und ENDLICH hab ich den richtigen (bzw. funktionellen) Weg gefunden wie man es macht:
overlay.xul:

<overlay id="extensionId" 
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  <script type="application/x-javascript" src="chrome://extensionId/content/myJs.js"/>
</overlay>
</pre>
<strong>myJs.js:</strong>
<pre lang="javascript">
Components.utils.import("resource://jslibs/test.js");
function startupWrapper() {
	var appcontent = document.getElementById("appcontent"); // browser
	if (appcontent) {
		appcontent.addEventListener("DOMContentLoaded", function() {
					justATest(getBrowser());
				}, true);
	}
}

test.js:

var EXPORTED_SYMBOLS = ["justATest"];
justATest = function(gBrowser) {
	var body = gBrowser.mCurrentBrowser.contentDocument.getElementsByTagName('body')[0];
}

Herzlichen Glückwunsch. Vorher hab ich „nur“ auf DOMContentLoaded gehört, das hat mir dann aber beschert, dass meine Funktion pro XUL-Dokument aufgerufen wurde, also z.B. für die Web Developer Toolbar, die Locationbar, den Browser an sich und dann erst die Webseite. Vorher hab ich das kläglich mit

if (gBrowser.mCurrentBrowser.contentDocument.documentURI != "about:blank") {
  // do something
}

abbeholfen, aber das ist ja doof 🙂 Jetzt gehts. Hooray