Envoyé par : magicyoda
Date : 29/03/2009 23:55
Bonjour,
tout d'abord, je suis très débutant, je viens de commencer aujourd'hui mais j'ai des connaissances javascript.
J'ai passé toute la journée sur ce problème de base, j'en peux plus :
J'ai une sidebar contenant un label et j'aimerai depuis mon code récupérer ou changer la valeur de ce label grace à document.getElementById , mais IMPOSSIBLE je n'y arrive pas. J'ai réduit mon code au maximum :
mon .JS :
var linkTargetFinder = function () { return { init : function () { gBrowser.addEventListener("load", function () { linkTargetFinder.run(); }, false); }, run : function () { alert(document.getElementById('atest2').value); alert(content.document.location); } }; }(); window.addEventListener("load", linkTargetFinder.init, false);
ma SIDEBAR :
<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css" ?> <?xml-stylesheet href="chrome://browser/skin/browser.css" type="text/css" ?> <!DOCTYPE linktargetfinder SYSTEM "chrome://linktargetfinder/locale/translations.dtd"> <page id="sbEmptySidebar" title="&sidebar.title;" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" > <script type="application/x-javascript" src="chrome://linktargetfinder/content/linkTargetFinder.js"/> <vbox flex="1"> <label id="atest2" value="lol" /> <label id="atest" value="&sidebar.title;" /> </vbox> </page>
Lorsqu'en bas de fichier .js, j'ai :
window.addEventListener("load", linkTargetFinder.init, false);
il me renvoit toujours "null" car l'élément est introuvable.
MAIS j'ai trouvé que si je remplacais par :
window.addEventListener("load", linkTargetFinder.run, false);
(.run au lieu de .init)
j'obtenais au lancement du navigateur la BONNE VALEUR du label ! mais si je relance le .run qqes secondes plus tard à l'aide d'un bouton, il me renvoit à nouveau NULL.
Je n'y comprends plus rien !!
Comment pourrais-je procéder simplement pour toujours obtenir les bonnes valeurs de mes éléments de sidebar ..
merci d'avance
Envoyé par : magicyoda
Date : 01/04/2009 18:04
la solution :
var sidebar = top.document.getElementById("sidebar").contentDocument; var iframe = sidebar.getElementById('relatediframe');
ou autre que iframe ;)
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.