Envoyé par : Christophe Charron
Date : 11/12/2006 18:38
Bonsoir, j'ai un problème "navrant" que j'ai beau tourner dans plusieurs sens et que je n'arrive pas à solutionner. Au départ, la demande paraît simple : sélectionner une ligne particuliere parmi les menuitems d'une menu popup !! J'y arrive, mais uniquement en cliquant sur un bouton. Les mêmes fonctions, appelées consécutivement au changement du datasource ne fonctionnent pas !! Je tourne carrément fou mais peut-être est-ce un bug ?
Je fais mes essais sur WXP SP2 FF2.0 et l'on peut voir et récupérer la fenêtre et le fichier rdf ici :
D'avance, merci pour vos lumières
Envoyé par : thierry
Date : 12/12/2006 00:18
salut,
à mon sens le problème vient du fait que tu ne laisses pas à xul le temps de faire sa cuisine. peut-être que tu souhaites manipuler une liste qui n'a pas encore été générer.
en remplaçant :
pf_alim_01();pf_sel_ligne(1);alert(pf_recup_01());
par :
pf_alim_01();alert('aspet');pf_sel_ligne(1);alert(pf_recup_01());
... ça marche !
il doit surement y avoir un moyen de savoir lorsque la liste est prête (si c'est bien ça le problème), mais je ne peux pas t'en dire plus...
Envoyé par : Christophe Charron
Date : 12/12/2006 08:03
Bonjour et merci, Arghh, j'avais essayé de temporiser avec un alert et cela ne fonctionnait pas ... mais en fait je viens de refaire l'essai et cela fonctionne bien !!! Je ne comprends toujours comment fonctionne le cache de FF pour javascript ni celui du serveur pour xml et php ... Bref ca marche, j'ai donc un peu réorganisé les procédures en incluant un
setTimeout
et cela fonctionne. Mais comment fixer de manière efficiente la durée du timeout et faut-il systématiquement le supprimer via
clearTimeout
? Et en fait , je préférerais avoir un évènement qui me dise que la liste est totalement remplie. La nouvelle mouture du code est ici
Envoyé par : laurentj
Date : 12/12/2006 13:00
y a rien à comprendre au niveau du cache..
Gecko charge ta ressource RDF, la met dans un cache, et est donc disponible de suite au rechargement de la page.
Pour être informer du chargement d'un rdf, il faut utiliser un listener sur nsIRDFXMLSinkObserver sur la datasource distante (qui implemente nsIRDFRemoteDataSource et nsIRDFXMLSink). Par contre, pas sûr que cela soit utilisable en remote xul.
Envoyé par : Eric
Date : 13/12/2006 13:08
La solution ne serait-elle pas d'attendre que le template soit reconstruit en ajoutant un listener sur le builder
Envoyé par : Christophe Charron
Date : 13/12/2006 15:41
Bonjour, oui je pense que c'est la bonne piste à suivre, mais cela dépasse pour l'instant mes compétences.
Envoyé par : Eric
Date : 26/12/2006 11:35
Voici un exemple :
var tree = document.getElementById("myTree"); var lstn = { willRebuild : function(event){onWillRebuild(event);}, didRebuild : function(event){onDidRebuild(event);} }; tree.builder.addListener(lstn);
et les fonctions :
function onDidRebuild(aEvnt){ alert("did rebulid"); } function onWillRebuild(aEvnt){ alert("will rebulid"); }
enfin, la construction du template
var tree = document.getElementById("myTree"); tree.setAttribute("ref", "myRef"); tree.database.AddDataSource(myDatasource); //éventuellement //tree.builder.rebuild();
les fonctions onWillRebuild et onDidRebuild vont être appelées par la builder avant et après reconstruction du template
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.