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
- Javascript dynamisch laden
- Javascript aus FF-Erweiterung in der Webseite benutzen
- Javascript: getter und setter
- Vererbung in Javascript anhand von Exceptions
- public, private und “privileged” in Javascript
If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.
