Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# probleme de perte du focus

Envoyé par : jales

Date : 11/01/2007 09:52

bonjour

j'ai un petit probleme et je ne sais pas par quel bout le prendre en xul.

je veux faire un champ de saisie avec des propositions de completions : c'est a dire que lorsque l'utilisateur tape le debut d'un mot, une liste de completions possibles s'affichent en dessous.

en html, je sais faire ca avec un div auquel j'ajoute progressivement des span. en xul, j'ai voulu faire ca avec une popup.

le probleme, c'est qu'en html, je ne pert pas le focus : ie lorsque l'utilisateur continue a ecrire, les completions se mettent a jour, mais le focus reste sur la zone de saisie. Je n'arrive pas a reproduire ce comportement en xul : a chaque caractere, le focus bascule sur la popup, ce qui est un peu penible.

est ce que vous savez comment je dois m'y prendre pour eviter ca ?

merci

# Re: probleme de perte du focus

Envoyé par : papy

Date : 11/01/2007 10:18

Cette fonctionnalité est déjà implémentée dans XUL, tu n'as pas besoin de le faire à la main.

Regarde l'attribut type des textbox et l'API autocomplete ca devrait solutionner ton problème, ou en tout cas tu devrais trouver deux trois pistes intéressantes.

# Re: probleme de perte du focus

Envoyé par : chBok

Date : 11/01/2007 10:20

Je n'ai pas réfléchi à ton soucis de perte de focus, mais as tu jeté un oeil à ce script sur notre wiki permettant justement de faire de l'autocomplétion ?

# Re: probleme de perte du focus

Envoyé par : jales

Date : 11/01/2007 12:04

merci pour vos reponses.

j'ai regarde le script du wiki, et il depasse de loin le niveau de complexite que je sais gerer. entre les declaration de contractId et les XPcom, j'avoue etre depassé.

je suis reste dans des choses plus simple pour moi :

function display_hint(input_id,input_value,popup_id,ajax_url) {
 var req = new XMLHttpRequest();
 var url=ajax_url+'&str_code_start='+input_value;
 req.open('GET', url, true);
 req.onreadystatechange = function() {
   if (req.readyState == 4) {
     if (req.status == 200) {
       hint_list=eval('('+req.responseText+')');
       if ( 0< hint_list.length && hint_list.length < 20) {
         var Ztxtin = document.getElementById(input_id);
         var Zpp = document.getElementById(popup_id);
         delete_all_childs(Zpp);
         add_menuitems(Zpp,hint_list);
         Zpp.showPopup( Ztxtin, -1, -1, 'popup', 'bottomleft', 'topleft' );
       }
     }else{
       alert('Error loading page: '+req.status+'\n');
     }
   }
 };
 req.send(null);
}

ou req.responseText est le code string d'une declaration de array, comme par exemple

['lundi', 'lunatik' ]

# Re: probleme de perte du focus

Envoyé par : hhf

Date : 16/01/2007 01:07

à vu de nez avec un rdf pour alimenter ton popup, se sera mieux.

Pour le contractId et les XPcom, c'est valable seulement si t'es dans le chrome. Précise si tu es dans le chrome ou en client distant

# Re: probleme de perte du focus

Envoyé par : jales

Date : 19/01/2007 14:27

bonjour

desole pour mon delai de reponse

l'appli est en chrome.

je trouve le rdf tres lourd au niveau de la syntaxe qu'il exige. et je ne sais pas bien comment alimenter une source rdf en passant par une requete ajax. c'est pourquoi je me restreint a une requete ajax qui repond un array.

# Re: probleme de perte du focus

Envoyé par : hhf

Date : 19/01/2007 18:58

si RDF alors pas Ajax, l'un ou l'autre. koi que si tu est dans le chrome, tu peut tjs parser le xml et recréer un RDF, mais quel interet...LOL

pour une liste (qui peut etre longue) le RDF est vraiment le plus adapté. Une fois que t'aura compris, tu pourra plus t'en passer. :-D

Je te conseille vraiment de looker ca. si t'a des questions n'hesite pas Et dans ton cas je te jure que la syntaxe sera pas trop dur, tu n'a finalement besoin que de generer une liste de mot.

# Re: probleme de perte du focus

Envoyé par : jales

Date : 29/01/2007 17:47

bonjour

desole de deterrer ce sujet, mais je viens de tester le script propose ici : http://xulfr.org/sources/Weeksdays.js

j'ai copier ce script dans les balises script-cdata d'un fichier xul, et ajouté

<label value="fill the box"/> 
<textbox type="autocomplete" autocompletesearch="Weeksdays" />
<textbox type="autocomplete" autocompletesearch="history" />

le textbox branché sur history marche, mais pas l'autre. est ce une erreure de ma part, ou qqchose dans les script ?

merci

# Re: probleme de perte du focus

Envoyé par : thefab

Date : 30/01/2007 03:18

Pour que le script Weekdays.js fonctionne il faut qu'il soit placé dans le sous-dossier "components" de ton appli chrome

chrome/
    components/
        Weekdays.js

Si ça ne fonctionne toujours pas, supprime les fichiers "compreg.dat" et "xpti.dat", qui contiennent les informations sur les composants XPCOM enregistrés, dans le dossier du profil utilisateur afin que Weekdays soit réinscrit lors du prochain démarrage.

# Re: probleme de perte du focus

Envoyé par : jales

Date : 30/01/2007 10:08

dans ma version (Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1) il y a une repertoire chrome, et un repertoire components, mais ils ne sont pas imbriqués.

dans componenets, j'ai bien , le fichier 'compreg.dat', mais pas l'autre/ par contre j'ai un 'xpinstal.dll'

sinon, le fichier javascript, je dois le placer dans quel chrome ? parce que j'ai celui de l'install, dans program files; j'ai celui ce mon profile, dans documents and settings; et j'ai celui de mes extensions, sur un drive partagé.

par contre, je n'ai de repertoire components que dans la descendance de programm files, et ca m'embete de devoir mettre le fichier la, car je voudrais plutot qu'il soit partager dans le drive commun a tout les utilisteurs.

# Re: probleme de perte du focus

Envoyé par : thefab

Date : 30/01/2007 13:55

dans componenets, j'ai bien , le fichier 'compreg.dat', mais pas l'autre/ par contre j'ai un 'xpinstal.dll'

C'est bizzard ça ! Le fichier 'compreg.dat' et 'xpti.dat' doivent ce trouver dans le dossier du profil utilisateur (Documents and Settings\...) mais pas dans 'components'.

sinon, le fichier javascript, je dois le placer dans quel chrome ?

Dans le chrome de tes sources.

il y a une repertoire chrome, et un repertoire components, mais ils ne sont pas imbriqués.

Effectivement je me suis trompé:

chrome/
    content/
        tes sources
components/
    Weekdays.js

# Re: probleme de perte du focus

Envoyé par : jales

Date : 30/01/2007 14:33

je confirme : dans C:\Documents and Settings\toto\Application Data\Mozilla\Firefox\Profiles\pu63i5e4.default\chrome

j'ai 2 fichiers : userChrome-example.css userContent-example.css

et je n'ai pas de repertoire : C:\Documents and Settings\toto\Application Data\Mozilla\Firefox\Profiles\pu63i5e4.default\content

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.