Envoyé par : Utilisateur anonyme
Date : 02/11/2005 18:30
Salut à tous,
Comme vous le savez, les versions les plus récentes de Gecko supportent la création d'arbres XML DOM grâce à des écritures du type :
var node = <aaa>bbb</aaa>;
J'ai essayé avec une nightly récente de XulRunner de créer de la sorte des noeuds XML qui décrivent des éléments XUL, dans l'idée de les intégrer ensuite à l'interface en faisant un appendChild() sur le noeud <window> du document. Malheureusement, ça ne semble pas fonctionner.
Quelqu'un aurait une idée ?
Envoyé par : laurentj
Date : 04/11/2005 01:21
je pense que tu as oublié de leur attribuer le bon namespace, non ?
Envoyé par : Utilisateur anonyme
Date : 04/11/2005 22:50
Ben, j'y ai bien pensé...
Le code suivant fonctionne :
var titi = document.createElement("button"); titi.setAttribute("label", "trululu"); document.getElementById("main-window").appendChild(titi);
Alors que celui-ci ne fonctionne pas :
var toto = <button xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" label="trululu"/>; document.getElementById("main-window").appendChild(titi);
Ce qui est étrange, c'est que si je fais un alert() de chaque variable (titi et toto, les bien-nommés), j'ai bien un [object XULElement\] pour la variable titi, mais rien (vraiment rien !) ne s'affiche pour la variable toto. Bizarre, non ?
Envoyé par : thefab
Date : 05/11/2005 01:15
Si tu fais
alert(typeof(toto));
tu verras que ta variable contient quelque chose (xml), mais appendChild ne fonctionne toujours pas car elle attend un paramètre nsIDOMNode. Donc il faudrait pouvoir faire un cast mais je sais pas si c'est possible en JavaScript
Envoyé par : Utilisateur anonyme
Date : 06/11/2005 01:04
Bon, j'ai épluché tout le Web, et je n'ai pas trouvé comment faire pour transformer un objet XML e4x en un objet nsIDOMNode...
Je me suis fait une raison, et j'utilise :
var str = "<button xmlns='http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul' label='trululu'/>"; var domparser = Components.classes["@mozilla.org/xmlextras/domparser;1"].createInstance(Components.interfaces.nsIDOMParser); var node = domparser.parseFromString(str, "text/xml").firstChild; document.getElementById("main-window").appendChild(node);
Merci pour votre aide !
Envoyé par : laurentj
Date : 07/11/2005 16:28
J'ai pas trouvé non plus pour avoir le noeud dom d'un objet XML, mais par contre, tu peux eviter d'avoir à manipuler un xpcom.
var node = new DOMParser()).parseFromString(str,"text/xml").firstChild;
Envoyé par : Utilisateur anonyme
Date : 07/11/2005 17:01
Ah oui, merci pour le truc. J'avais pas fait gaffe à l'objet DOMParser...
Envoyé par : laurentj
Date : 07/11/2005 17:28
il y a en effet encore des manques dans E4X : https://bugzilla.mozilla.org/show_bug.cgi?id=270553
la communication entre DOM et les objets E4X n'est pas encore faite :-/
Votez pour le bug !
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.