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