Jay: Event einer Seite hinzufügen

Hey,

ich bin grad dabei eine kleiner Firefox-Extension zu machen, in der ich eine Seite quasi modifiziere. Ich habe dort einige Bilder eingefügt usw. und diese Aktionen bisher nur auf Buttons gelegt. Nun versuche ich schon einige Zeit das zu automatisieren, es gelingt mir aber leider nicht. :(

Die Seite ist in Frames organisiert, wovon ich aktiv nur ein Frame bearbeite. Da sich der Frameinhalt ändert, kann ich in den entsprechenden Body-Tag kein onload()-Event einfügen, weil dieser beim Neuladen weg ist. ^^

Das darüberliegende Frameset mit einem Event zu versehen schlug leider auch fehl. :(

Ist es eigentlich möglich in eine bestehende Seite nachträglich Events einzufügen oder wird das aus Sicherheitsgründen gleich untersagt? Als ich versucht hab ein <a>-Element der Seite per onclick eine Funktion ausführen zu lassen ging auch nix. :(

Vielleicht hat noch jemand einen Ratschlag?

MfG Jay

  1. Hallo!

    Ist es eigentlich möglich in eine bestehende Seite nachträglich Events einzufügen oder wird das aus Sicherheitsgründen gleich untersagt?

    Ja, das geht. Auf eine Seite, die Frames verwendet, hab ich das noch nie
    versucht, aber prinzipiell geht das in einer Extension folgendermaßen:

      
    function init() {  
        //machwas  
    }  
      
    function starter() {  
        window._content.addEventListener('load',init,true);  
    }  
      
    window.addEventListener('load',starter,true);  
    
    

    Eigentlich solltest du den Code in starter() jetzt so verändern können, dass
    er der Seite in einem Frame irgendein Event hinzufügt:

      
    window._content.FrameName.addEventListener('load',init,true);  
    
    

    oder auch (um einem Link ein onclick-Event hinzuzufügen):

      
    window._content.FrameName.getElementById('foo').addEventListener('click',machwas,false);  
    
    

    Gruß, Jan

    1. Habs hinbekommen. Die Grundstruktur war ein guter Hinweis.

      Nach einigen Tests hab ich noch bemerkt, dass ich mich in verschiedenen Kontexten bewegt hab. Einmal im Fenster meiner Erweiterung und einmal im Zielfenster, also dem Browserihalt. ^^

      Hab also einige Male den Event in mein eigenes Extensionfenster gelegt, ohne es zu merken. xD

      Falls noch jemand auf das selbe Prob stoßen sollte:

      window.addEventListener('DOMContentLoaded', meineFunktion , true);

      hab ich dem Browser-Window-Objekt hinzugefügt.

      Aus eigenen Fenstern ist es entsprechend:

      window.parent[.partent ...].addEventListener['EventTyp', FktName, Bool]

      Danke für die schnelle Hilfe.

      MfG Jay