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 :) )
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.