Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# impossible d'accéder aux élements anonymes

Envoyé par : Utilisateur anonyme

Date : 05/07/2011 12:05

Bonjour à tous!

Tout d'abord petite présentation car je suis tout nouveau. Je suis l'auteur d'un addon pour thunderbird qui s'appelle MoreSnooze.

Cet addon fonctionne bien avec TB3 mais je me casse les dents pour le faire migrer vers TB5.

Ce qui j'ai compris: Il semble que TB5 utilise les nœuds anonymes alors que ce n'était pas le cas de TB3.

Concrètement: J'essaie d'accéder à des élements menuitem pour les supprimer et les remplacer.

document.getAnonymousNodes("menuitem")

Là, j'ai une erreur

[Exception... "Could not convert JavaScript argument arg 0 >nsIDOMDocumentXBL.getAnonymousNodes" nsresult: "0x80570009 >(NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: chrome://moresnooze
/content/moresnooze.js :: <TOP_LEVEL> :: line 72" data: no]

Il me semble que je dois 'adapter' mes scripts à XBL mais je suis complètement paumé malgré de nombreuses recherches. D'ailleurs, ces éléments anonymes sont selon moi déjà 'déclarés' dans le script natif de lightning. Je vois pas trop pourquoi je devrais mettre en place des 'bindings', etc...

Merci d'avance pour votre aide.

# Re: impossible d'accéder aux élements anonymes

Envoyé par : Utilisateur anonyme

Date : 07/07/2011 15:26

J'ai fini après de longues souffrances par comprendre. Apparemment, getAnonymousNodes n'a de sens qu'à l'intérieur d'un xbl. Il semble qu'on ne peut pas l'utiliser dans du js DOM.

Maintenant, j'ai un autre problème dans mon fichiers xbl: Au niveau du 'content', j'ai des lignes du type

<xul:menuitem oncommand="snoozeItem(event)"/>

qui fonctionnent correctement.

Je souhaite ajouter des lignes de même type dynamiquement en ajoutant dans 'constructor':

var item = document.createElementNS(XUL_NS, "xul:menuitem");
item.setAttribute("oncommand", "snoozeItem(event)");
racine.appendChild(item);

L'élement est bien ajouté (je le vois dans Dom Inspector). Par contre, quand je clique sur l'élement, j'ai un erreur js:

snoozeItem is not defined.

Note: snoozeItem est une méthode définie dans le xbl

Je suis un peu sec... Si qqun a une idée...

Merci d'avance.

# Re: impossible d'accéder aux élements anonymes

Envoyé par : mistervince

Date : 07/07/2011 15:36

Si snoozeItem est une méthode définie dans le xbl, il faut l'appeler par

document.getBindingParent(this).snoozeItem();

depuis un élément anonyme

Dans le cas de tes items ajoutés, je suis pas sûr que ça marche, parce qu'ils ne seront pas anonymes. Dans ce cas, il faut parcourir le DOM pour retrouver l'élément principal (bindé sur ton xbl) pour pouvoir appeler cette méthode.

# Re: impossible d'accéder aux élements anonymes

Envoyé par : Utilisateur anonyme

Date : 07/07/2011 16:36

Merci pour ta réponse. Je suis pas sur de bien comprendre. Quand on appelle snoozeItem depuis un élément anonyme, ça marche (si l'appel est fait en statique dans le content). J'ai pas eu besoin de passer par GetBindingParent.

Par contre, si je parcours le dom, je vois pas les éléments ajoutés via le xbl vu que, justement, ils sont anonymes.

J'y perd mon latin...

# Re: impossible d'accéder aux élements anonymes

Envoyé par : mistervince

Date : 07/07/2011 17:22

Effectivement, après tests, getBindingParent n'est pas nécessaire, je suis le premier à m'y perdre !!

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.