Pour activer un élément, supprimer l'attribut disabled plutôt que de le mettre à false (problème avec listbox sinon).
var myXMLHTTPRequest = new XMLHttpRequest(); myXMLHTTPRequest.open("GET", "file://FILE", false); myXMLHTTPRequest.send(null); document.getElementById( 'ID' ).appendChild( document.importNode( myXMLHTTPRequest.responseXML.firstChild, true ) );
L'exemple ci-dessus permet d'ajouter l'arbre XUL contenu dans le fichier FILE comme fils d'un élement XUL d'identifiant (id) ID.
Voici un exemple de contenu que peut avoir le fichier FILE :
<hbox flex="1" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <button label="Ceci est un bouton" flex="1"/> <description flex="1">Hello the world !</description> </hbox>
Noter le xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" de la balise racine. Cet attribut est indispensable, sinon les éléments ne seront pas affichés.
à complèter
function attributeChanged(event) { alert(this.ordinal + '\n' + event.attrName + "\n'" + event.prevValue + "'\n'" + event.newValue +"'" ); } document.getElementById( 'bureau' ).addEventListener('DOMAttrModified', attributeChanged, true);
Le contenu d'un textbox ne peut être lu ou modifié à l'aide de l'attribut value, mais uniquement à l'aide de la propriété éponyme. Si l'on récupère le textbox, dans un composant XPCOM, en tant que nsIDOMElement, on n'aura pas accés à cette propriété. Vous trouverez ci-dessous une façon de procèder pour résoudre ce problème :
Code javascript :
f( document.getElementById( 'TEXTBOX_ID' ).inputField );
où TEXTBOX_ID est la valeur de l'attribut id du textbox concerné.
Code IDL :
void f( in nsIDOMHTMLInputElement TextBox );
Code C:
NS_IMETHODIMP MyComp::f( nsIDOMHTMLInputElement *TextBox ) { nsEmbedString Value; // ... TextBox->SetValue( Value ); // Permet de modifier le contenu du 'textbox' correspondant. // ... TextBox->GetValue( Value ); // Permet de récupèrer le contenu de 'textbox' correspondant. // NOTA : on peut aussi employer les fonctions 'SetValue()' 'GetValue()' de la bibliothèque 'NSXPCM' du projet Epeios. }
NOTA : le NodeName du textbox ainsi récupèré est html:input. Lorsque l'attribut multiline du textbox est à true, alors le composant est de type nsIDOMHTMLTextAreaElement, et non pas nsIDOMHTMLInputElement, et son NodeName est html:textarea.