--- title: On page load slug: Codeschnipsel/On_page_load translation_of: Archive/Add-ons/Code_snippets/On_page_load ---

Dieser Artikel ist für XUL / JavaScript-Entwickler, die benutzerdefinierte Code haben wollen jedes Mal eine neue Seite wird im Browser / Mail geladen ausgeführt. Wenn Sie genauere Kontrolle über benutzerdefinierte Code-Ausführung, zum Beispiel benötigen, wie Dokumente Laden oder wenn Registerkarten schalteten sehen Fortschritt Hörer.

Fortschritte Zuhörern ermöglichen Erweiterungen der Ereignisse mit Dokumenten Laden in den Browser und mit Tab Umschalten Ereignissen benachrichtigt werden. Fortschritte Zuhörer Umsetzung der nsIWebProgressListener Schnittstelle.

Erstellen eines Overlays

Zuerst müssen Sie einen erstellen, Überlagerung, um eine (oder mehrere, je nachdem, welche Anwendungen Sie zielen) der folgenden XUL-Dokumente:

Anwendung URI zu überlagern
Firefox chrome: //browser/content/browser.xul
Thunderbird chrome: //messenger/content/messenger.xul
Navigator von SeaMonkey chrome: //navigator/content/navigator.xul

Anbringen eines Skripts

Bringen Sie ein Skript, um Ihre einblenden (siehe "Anbringen eines Skripts zum Erstellen einer Overlay"), die eine fügt Last Ereignis-Listener APPCONTENT Element (Browser) oder messagepane (mail):

window.addEventListener("load", function load(event) {
    window.removeEventListener("load", load, false); // Listener entfernen, da nicht mehr benötigt
    myExtension.init();  
}, false);

var myextension = {
  init: function() {
    var APPCONTENT = document.getElementById("APPCONTENT"); // Browser
    if (APPCONTENT) {
      appcontent.addEventListener("DOMContentLoaded", myExtension.onPageLoad, true);
    }
    var messagepane = document.getElementById("messagepane"); // Mail
    if (messagepane) {
      messagepane.addEventListener("load", function(event) { myExtension.onPageLoad(event); }, true);
    }
  }

  onPageLoad: function(aEvent) {
    var doc = aEvent.originalTarget; // doc ist das Dokument, das den "onload" Event ausgelöst hat
    // Tu etwas mit der geladenen Seite.
    // doc.location ist ein Location-Objekt (siehe Link unten).
    // Man kann es verwenden, um Code nur auf bestimmten Seiten auszuführen.
    if (doc.location.href.search ("forum")> -1)
      alert("Eine Forum-Seite, wird geladen");
    
    // Füge Ereignis-Listener für page "unload" hinzu
    aEvent.originalTarget.defaultView.addEventListener ("unload", function(event) { myExtension.onPageUnload (event); }, true);
  }

  onPageUnload: function(Aevent) {
    // Tu etwas
  }
};

Aktuelle Firefox Stamm Night die onPageLoad Funktion nicht nur für Dokumente, Feuer, aber xul: Bilder (Favicons in Tabbrowser). Wenn Sie nur wollen, Dokumente zu verarbeiten, zu gewährleisten aEvent.originalTarget.nodeName == "#document".

Wenn Sie mit Code auf einer Seite zu laden, ist es wahrscheinlich, würden Sie wollen, um etwas Bereinigungscode auf Seite Entladen laufen. Um in das Unload-Ereignis im obigen Beispiel können Sie den "pagehide" Veranstaltung wie diese verwenden zu befestigen:

appcontent.addEventListener ("pagehide", myExtension.onPageUnload, false);

für APPCONTENT und ähnlich für messagepane

messagepane.addEventListener ("pagehide", myExtension.onPageUnload, false);

und fügen Sie den Code zur onPageUnload Methode.

 

 

Basis onPageLoad für ein Browser-Fenster

var myextension = {
    init: function () {
        // Das Ereignis kann DOMContentLoaded werden, pageshow, pagehide, laden oder entladen.
        if (gBrowser) gBrowser.addEventListener ("DOMContentLoaded", this.onPageLoad, false);
    }
    onPageLoad: function (Aevent) {
        var doc = aEvent.originalTarget; // Doc ist Dokument, das das Ereignis ausgelöst hat
        var win = doc.defaultView; // Sieg ist das Fenster für den doc
        // Test gewünschten Bedingungen und etwas tun,
        // If (doc.nodeName = "#document"!) Return; // Nur Dokumente
        // If (Sieg = win.top!) Return; // nur Top-Fenster.
        // If (win.frameElement) return; // Überspringen iframes / Rahmen
        alert ("Seite geladen wird \ n" + doc.location.href);
    }
}
window.addEventListener ("load", Funktion load (event) {
    window.removeEventListener ("load", Last, false); // Listener zu entfernen, nicht mehr benötigt
    myExtension.init ();  
},falsch);

Referenzen

Sehe auch