Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# [XBL] multiple inherits ?

Envoyé par : cokinou

Date : 13/08/2008 10:18

Bonjour,

Eh oui, c'est encore moi

J'aimerai poser une petite question relatives aux héritages de valeur dans les XBL.

En effet, j'ai fait un nouvel élément pouvant avoir comme attribut :

  • label (obligatoire)
  • description
  • tooltiptext

et je voudrais que le tooltiptext de mon nouvel élément soit tooltiptext si l'attribut tooltiptext est fourni, sinon description si l'attribut description est fourni, sinon label...

Voilà donc ce que j'ai essayé de mettre :

<xul:label xbl:inherits="value=label,tooltiptext=label,tooltiptext=description,tooltiptext" />

Le problème, c'est qu'il me met toujours le label dans le tooltiptext de mon élément.... j'ai essayé de changer l'ordre dans le xbl:inherits mais c'est toujours la même chose :-(

Auriez-vous une idée ?

J'ai toujours la possibilité de coder le truc en js mais j'aimerai savoir si c'est possible directement avec inherits ;-)

Merci d'avance

# Re: [XBL] multiple inherits ?

Envoyé par : cokinou

Date : 20/08/2008 14:45

Bon, vu que j'ai pas eu de réponses, je suppose que ce n'est pas possible, je me suis donc codé ma petite fonction en js pour faire ce que je voulais....

Si jamais quelqu'un à la réponse à ma question, à savoir si le multiple inherit existe, merci de me donner une petite réponse ;-)

# Re: [XBL] multiple inherits ?

Envoyé par : hhf

Date : 20/08/2008 22:14

Oui, a mon avis, tu dois faire une fonction de mise a jour utilise dans deux cas :

1er cas dans le constructeur du XBL

2e cas lors de la modification d'un des attribut précités. en utilisant l'événement DOMAttrModified

# Re: [XBL] multiple inherits ?

Envoyé par : cokinou

Date : 21/08/2008 10:32

hhf a écrit:

1er cas dans le constructeur du XBL

2e cas lors de la modification d'un des attribut
précités. en utilisant l'événement DOMAttrModified

C'est ce que j'ai fait, ou presque.... J'ai mis dans mon constructeur et j'ai redéfini la fonction setAttribute via :

<method name="setAttribute">
   <parameter name="attr"/>
   <parameter name="val"/>
   <body>
<![CDATA[
      this.constructor.prototype.setAttribute.call(this, attr, val);
      this.refresh();
      return val;
]]>
   </body>
</method>

(sachant que mon this.refresh() fait ce que je veux)

Quelle différence entre ma méthode (redéfinir la fonction setAttribute) et la méthode que tu préconises (gérer l'événement DOMAttrModified) ?

# Re: [XBL] multiple inherits ?

Envoyé par : hhf

Date : 21/08/2008 18:40

ben, comme tu l'a fait, tu es oblige de rappler la methode du constructor, c'est pas tres propre. d'autant que en plus tu appelles une methode refresh qui n'est peut etre (surement) pas utile pour certain attribute. De plus, si une propriete de ton object met a jour l'attribut en appelant la methode du constructeur en interne, tu ne l'intercepte pas. Je chipote, mais je preconises l'interception d'evenement.

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.