Envoyé par : kreatik
Date : 02/08/2006 01:13
Salut ;)
Je rencontre un petit problème, je génére mon code xul via javascript :
gestion=document.getElementById("gestion"); last=document.createElement('tabbox'); last.setAttribute('id','postes'); gestion.insertBefore(last,gestion.childNodes[2]); postes=document.getElementById("postes"); postes.appendChild(document.createElement('tabs')); postes.appendChild(document.createElement('tabpanels')); last=document.createElement('tab'); last.setAttribute('label','Poste '+i); last.setAttribute('id','poste_'+i+'_tab'); postes.childNodes[0].appendChild(last); last=document.createElement('groupbox'); last.setAttribute('id','poste_'+i+'_box'); postes.childNodes[1].appendChild(last); postes.childNodes[1].childNodes[0].appendChild(document.createElement('hbox')); postes.childNodes[1].childNodes[0].childNodes[0].appendChild(document.createElement('groupbox')); ...
Voici le un bout du code dans le fichier .xul :
<window id="gestion" title="TimerPI" width="600" height="450" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="onLoad()"> <script src="test.js"></script> <menubar><menu label="A propos..."> <menupopup><menuitem label="test..."/></menupopup> </menu> </menubar> <groupbox><box></box></groupbox> </window>
Le probleme ce situe au niveau du tab en haut, comme s'il n'était pas rataché au panel... alors que si je met le code direct sans passer par js ça fonctionne très bien.
Capture :
Une idée ?
Envoyé par : chBok
Date : 02/08/2006 15:02
En effet, on a l'impression que l'onglet n'est pas sélectionné. Il faudrait voir comment s'assurer que la sélection est bien effectuée.
Envoyé par : kreatik
Date : 02/08/2006 15:19
je comprend, pas, on ne peut voir le code source généré par js ??
Je boss avec eclipse et le plugin de dev xul.
Envoyé par : thefab
Date : 02/08/2006 16:27
Il faut simplement sélectionner un onglet après la génération des éléments.
tabbox.selectedIndex = 0;
Au début je pensais que c'était parce que tu n'utilisais pas de tabpanel, mais non ça ne change rien. Je mets ma version aussi car je ne génère pas de la même manière:
function creerTabs() { var container = document.getElementById("container"); var tabbox = document.createElement("tabbox"); var tabs = document.createElement("tabs"); var tabpanels = document.createElement("tabpanels"); container.appendChild(tabbox); tabbox.appendChild(tabs); tabbox.appendChild(tabpanels); for (var i = 0; i < 5; i++) { var tab = document.createElement("tab"); tab.setAttribute("label", "Poste " + i); tabs.appendChild(tab); var tabpanel = document.createElement("tabpanel"); tabpanels.appendChild(tabpanel); ... } tabbox.selectedIndex = 0; }
Fabrice
Envoyé par : kreatik
Date : 02/08/2006 16:51
Merci, je vais essayer. Mais c'est tout de même étrange la chose directement dans le fichier xul (sans js quoi) fonctionnait très bien.
Envoyé par : laurentj
Date : 03/08/2006 10:13
il faut faire attention lors de l'utilisation de childnodes : il contient tout les noeuds DOM fils. Pas seulement les balises, mais aussi les noeud textes, commentaires xml &cie.
En regardant rapidement ton source, je me demande si tu n'as en fait pas un problème à ce niveau là..
Et au fait, pourquoi créer ce <tabbox> <tabs> et <tabpanels> à la volée ? tu ne pourrais pas les mettre directement dans ton xul ? quitte à mettre un collapsed=true sur ton tabbox ? Ça ferait du code js en moins, donc des bugs en moins, et ton fichier xul serait plus clair...
Envoyé par : kreatik
Date : 03/08/2006 10:22
Salut, merci pour l'info, je savias pas que childnodes prenait en compte aussi les commentaires et les autres éléments (après tout, ça semble logique).
Pour ce qui est du <tabbox> <tabs> et <tabpanels>, au début je l'avais directement dans mon xul, mais je pensait qu'il fallait aussi générer via js les élements parents, mais non, ça ne change rien.
Je suis un peu déçus, le debug au niveau xul n'est pas évident, quasi absent même ! Chez moi, que ce soit en xulrunner ou via firefox (1.5) le mode debug="true" ne fonctionne pas ! Et sur aucune fenêtre...
Merci pour tout ;)
Envoyé par : chBok
Date : 03/08/2006 10:40
Oui, c'est vrai, le mode debug="true" placé sur une balise <window> par ex, ne fonctionne plus depuis Firefox 1.5 (Gecko 1.8). C'est en effet dommage, car pratique.
Envoyé par : kreatik
Date : 03/08/2006 10:42
Mais pourquoi cela ? Et comment fait-on ? Il n'y pas plus de moyen que ça pour debugger du xul ?? Déjà que l'écrire via js c'est vraiment pas pratique mais alors là sans outils c'est vraiment chaud :/
Envoyé par : Zmx
Date : 03/08/2006 14:40
Si tu a le DOM inspector qui permet mine de rien de faire pas mal de debug XUL
Envoyé par : kreatik
Date : 07/08/2006 10:19
Il se trouve où ? C'est une extension ?
Envoyé par : OlivierA
Date : 12/09/2006 18:16
Alors juste pour info, je viens de perdre une après midi sur la génération d'onglets qui ne marchait pas (dev extension).
En effet,
tabbox.selectedIndex = 0; %%%
résout tous les problèmes !!
Moi j'obtenais l'erreur suivante :
"error when moving a tab before it's parent and then closing it (Error: uncaught exception: 2147500037)" lorsque je cliquais sur les onglets générés.
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.