Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Probleme XBL implementation

Envoyé par : alyjeje

Date : 18/03/2011 10:21

Bonjour, J'ai actuellement un xbl qui fonctionne, du moins pour la partie content. Ce qui cloche c'est la partie implementation qui donne l'impression de ne pas être lue...

Voici un exemple avec une méthode "test" qui affiche une alert et qui est déclenchée sur l’événement "onclick" du premier textbox.

Voici le code du xbl :

 <?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl"
         xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
         xmlns:xbl="http://www.mozilla.org/xbl">
   <binding id="box_input">
       <content>
           <xul:hbox id="box1" style='border: 1px solid black' width='100' height='30' onclick="action_fleche(document.getAnonymousNodes(this.parentNode)[1]);">
               <xul:image src="chrome://jelixkomodo/skin/menu-closed-triangle.png"/> 
               <xul:label value="input" />
           </xul:hbox>
           <xul:hbox collapsed ="false">
               <xul:vbox>
                   <xul:hbox>
                       <xul:label width='80' value="ref"/>
                       <xul:textbox xbl:inherits="value=varref" onclick="this.parentNode.parentNode.parentNode.parentNode.test()" onchange="this.parentNode.parentNode.parentNode.parentNode.varref = this.value;" />
                   </xul:hbox>
                   <xul:hbox>
                       <xul:label width='80' value="label"/>
                       <xul:textbox xbl:inherits="value=varlabel" onchange="this.parentNode.parentNode.parentNode.parentNode.varlabel = this.value;"/>
                   </xul:hbox>
                   <xul:hbox>
                       <xul:label width='80'>Default value</xul:label>
                       <xul:textbox xbl:inherits="value=vardefault" onchange="this.parentNode.parentNode.parentNode.parentNode.vardefault = this.value;"/>
                   </xul:hbox>
                   <xul:hbox>
                       <xul:label width='80'>Type</xul:label>
                       <xul:menulist>
                           <xul:menupopup><xul:menuitem label="String"/><xul:menuitem label="Number"/></xul:menupopup>
                       </xul:menulist>
                   </xul:hbox>
               </xul:vbox>
               <xul:vbox>
                   <xul:hbox>
                       <xul:checkbox xbl:inherits="checked=varreadonly" onchange="this.parentNode.parentNode.parentNode.parentNode.varreadonly = this.value;" />
                       <xul:label>read only</xul:label>
                   </xul:hbox>
                   <xul:hbox>
                       <xul:checkbox xbl:inherits="checked=varrequired" onchange="this.parentNode.parentNode.parentNode.parentNode.varrequired = this.value;"/>
                       <xul:label>required</xul:label>
                   </xul:hbox>
               </xul:vbox>
           </xul:hbox>
       </content>
       <implementation>
           <method name="test">
               <body>
               <![CDATA[
                    alert("test");
               ]]>
               </body>
           </method>          
       </implementation>
   </binding>
</bindings>

Si vous pouviez m'aider ça serait super

# Re: Probleme XBL implementation

Envoyé par : mistervince

Date : 21/03/2011 09:24

salut,

Je te conseille d'utiliser la méthode document.getBindingParent à la place de la navigation par le DOM comme tu fais. Quelle que soit ta structure, tu peux ainsi retrouver ton binding principal depuis n'importe quel enfant. Pour ton textbox, ça donnerai :

<xul:textbox xbl:inherits="value=varref" onclick="document.getBindingParent(this).test()" onchange="document.getBindingParent(this).varref = this.value;" />

Sinon, es-tu sûr que l'évènement click est bien déclenché (en mettant directement l'attribut onclick="alert('ok')" par exemple) ?

bon courage

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.