Forums : Extensions

Aller à la discussion :  Plus récente Plus ancienne

# Problème addEventListener

Envoyé par : estar

Date : 26/04/2007 12:13

Bonjour

Je suis débutant en ce qui concerne la création d'extension sous Firefox. J'ai voulu commencer à développer une petite extension permettant de récupérer le code source des pages HTML après un chargement de page. Je me suis donc servit du code décrit ici: http://developer.mozilla.org/fr/docs/Extraits_de_code:Sur_un_chargement_de_page

Voici le code de mon overlay

<?xml version="1.0"?>
<!DOCTYPE window [
<!ENTITY % browserDTD SYSTEM "chrome://browser/locale/browser.dtd" >
%browserDTD;
]>
<overlay id="sample"
          xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 <statusbar id="status-bar">
  <button id="statusrecord" label="Enregistrement"  oncommand="record(event);"/>
  <script type="application/x-javascript"  src="chrome://exemple/content/loadurl.js"/>
 </statusbar>
</overlay>

et celui de mon script

function record(event) {
    alert("record");
    try {
    if (event.target.label=="Enregistrement") {
     event.target.label="En cours";
     window.addEventListener("load",function() {myExtension.init();},  false);
    } else {
     event.target.label="Enregistrement";
     window.removeEventListener("load", function()  {myExtension.init();}, false);
    }
    } catch (e) { alert(e);}
}

var myExtension = {
  init: function(e) {
    alert("init");
    var appcontent = document.getElementById("appcontent");   
    if(appcontent)
      appcontent.addEventListener("load", this.onPageLoad, true);
  },

  remove: function(e) {
    var appcontent = document.getElementById("appcontent");   //  navigateur
    if(appcontent)
      appcontent.removeEventListener("load", this.onPageLoad, true);
  }, 

   onPageLoad: function(aEvent) {
        ...
   }
}

Ma fonction record est bien appelé lors de mon clic sur mon bouton mais apparemment, ma fonction init n'est appelé que si le 2e paramètre de mon addEventListener est myExtension.init(). Lorsque je fais cela, le addEventListener de la fonction init me renvoie un warning NS_ERROR_RPC_BAD_CONVERT_JS. Débutant également en Javascript, j'aurais déja voulu connaitre la différence entre

function() {maFonction();}

et

maFonction()

pour le 2e paramètre du addEventListener.

J'aurais également une 2e question. Si j'essaie dans mon script de faire

var bouton=document.getElementById("statusrecord");

je me retrouve avec une valeur de bouton null

Merci d'avance pour vos réponses (et d'avoir lu le message entièrement vu la taille de celui ci :) )

# Re: Problème addEventListener

Envoyé par : nants

Date : 30/05/2007 18:19

J'ai l'impression que tu te compliques un petit peu trop la vie. J'ai fait une extension assez similaire à ce que tu cherches à faire, et donc, j'ai juste fait : (dans le script.js)

window.addEventListener("load", MaFonction, true);
window.addEventListener("click", MaFonction, true);
function MaFonction(event){
  var targetBrowser = window.top.getBrowser().selectedBrowser;
  if (targetBrowser && targetBrowser.currentURI.spec) {
		var xmlserial = new XMLSerializer();
                       //Récupérer le contenu de la page
		var doc = new XPCNativeWrapper(targetBrowser.contentWindow, 'document');
		var mainstr = xmlserial.serializeToString(doc.document);
   }
}

Ici, la variable mainstr contient tout le contenu de la page html courante.

Ps: désolée si j'ai répondu à côté de la plaque

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.