[DHTML] Un truc qui pourrait intéresser du monde : Autocomplete manuel

Un truc qui pourrait intéresser du monde : Autocomplete manuel [DHTML] - HTML/CSS - Programmation

Marsh Posté le 12-07-2003 à 01:23:33    

deleted


Message édité par MagicBuzz le 01-02-2010 à 13:19:47
Reply

Marsh Posté le 12-07-2003 à 01:23:33   

Reply

Marsh Posté le 12-07-2003 à 01:56:10    

Reste plus qu'à pouvoir faire flèche vers le bas pour sélectionner  :whistle:
 
 
edit:  :cry: sous firebird je peux même pas sélectionner de texte  :cry:


Message édité par belgique le 12-07-2003 à 01:57:21
Reply

Marsh Posté le 12-07-2003 à 08:06:22    

MagicBuzz a écrit :


Ouais, bah même bug que sous Opéra...
 
Essaie de voir si en le faisant se comporter comme IE ça passe...
 
Sinon c'est foutu.
 
Le problème vient du fait que :
 
Les pays sont listés dans un gros div qui est rempli de petits divs (un par pays)
 
Sous IE, quand tu cliques sur l'ascenceur ou sur un pays, l'évènement "onblur" sur la textbox se déclenche, mais pas le onclick sur le body, donc la liste reste visible, car je la fais disparaître onclick sir le body.
 
Sous NS, c'est le contraire : le onblur se déclenche pas, mais le onclick du body se déclenche :pt1cable:
 
Dans tous les cas, le onclick sur le div ne se déclenche pas quand on clique sur les ascenceurs.
 
Sous Opéra, les deux se déclenchent, donc on est incapable de savoir si on a réellement cliqué dans le body pour faire disparaître la liste, ou si on a clické dans la liste des pays...


 
C'est ça qui est génial avec toi. Tu dis que seul IE travaille correctement, hors c'est opéra qui a raison, les deux events étant de même priorité, il est normal qu'ils se déclenchent simultanément.


Message édité par gizmo le 12-07-2003 à 08:22:51
Reply

Marsh Posté le 12-07-2003 à 10:43:57    

[:xp1700] Trop bien ce script. (ca évite de faire des trucs du genre: si votre pays n'est pas dans liste, précisez-le ici...). Je garde le topic sous le coude en attendant les debugages. ([:drapo] masqué)

Reply

Marsh Posté le 12-07-2003 à 14:33:35    

Faudra apprendre à lire les specs. Annuler un event, cela revient à changer sont comportement normal, rien d'autre. un blur peut donc sans aucun problème agir en même temps qu'un click.

Reply

Marsh Posté le 13-07-2003 à 00:22:48    

[:drapo] intéressant ce script :)

Reply

Marsh Posté le 13-07-2003 à 00:36:51    

Ouep, intéressant :)
 
Pour ta future version, tu pourrais ajouter un grip size, ça  pourrait être sympa :)

Reply

Marsh Posté le 13-07-2003 à 23:10:27    

Je rigolais, calme toi :lol:
 
Quoique.. [:meganne]


Message édité par *syl* le 13-07-2003 à 23:11:09
Reply

Marsh Posté le 13-07-2003 à 23:32:35    

MagicBuzz a écrit :


Non, toi retourne voir la définition de onblur.
 
Il se déclenche lorsque l'élément perds le focus.
Donc si lorsque je clique sur un élément, j'annule ce qu'il fait, l'élément courrant est censé conserver le focus, sinon, je vois pas pourquoi je me ferais chier à bloquer l'évènement onclick de l'autre élément, il suffisait de ne rien mettre comme action associée, ce qui n'a rien à voir.


 
T'as vraiment du mal on dirait.
 
On va prendre un exemple simple: j'ai un input et un lien, avec un blur sur l'input et un click su le lien.
Condition initiale: j'ai le focus sur l'input.
Action: Je clique sur le lien.
Si maintenant, j'annule l'event click, cela revient JUSTE à ce que le lien ne lance pas de requète http, il prend quand même le focus et l'input devient blur.
 
T'as compris maintenant?
 
Evidemment, si après tu te bases sur les comportements de IE pour dire ce qui est correct ou ce qui ne l'est pas...

Reply

Marsh Posté le 15-07-2003 à 01:31:03    

bon, puisque MagicBug justifie son incapacité à faire fonctionner correctement une appli aussi simple en rejetant la faute sur les concepteurs des outils, je me dois de rétablir la vérité.
 
Alors, tout d'abord, un event blur se produit AVANT un event click, que ce soit sous Opera ou IE, un simple test avec un input et un lien avec affichage d'une variable permet de le confirmer. Son argument comme quoi il doit bloquer le onclick est donc faux
(remarquez que selon lui, c'est "trivial"...)
 
Ensuite, celui-ci affirme, sur de lui:

Citation :

Quand tu cliques sur un objet, si on n'annule pas le code de sortie, l'évènement est propagé au parent de l'objet, et ainsi de suite. (t'as qu'à faire un div, et "onclick" sur le div un "alert('toto')" et onclick sur le body "alert('titi')", il va t'afficher "toto" puis "titi". C'est le comportement normal.

 
Or, ce qu'il nous décrit ici, n'est ni plus ni moins que le principe de bouillonement. Ce qu'il oublie de dire, c'est que se principe s'applique APRES le principe de capture d'évennement selon la méthode standard, qui elle, part du SOMMET du document.
L'annulation d'un event permet effectivement de bloquer tous les actions par défaut du même event, mais ici, comme il s'agit d'action spécifiée par l'utilisateur (alert), il est normal qu'elles soient exécutée.
Opera a donc raison, Magic à tord.
 
Enfin, parce qu'il n'aurait pas été très utile de lui rabattre son caquet en laissant les utilisateurs sur leur faim, j'ai pris son script, ouvert deux-trois sites parlant d'ecmascript et de DOM, et je l'ai modifié.
J'y ai apporté les modifications suivantes:
- support de Opera 7.1
- utilisation de fonctions normalisées pour un meilleur support ultérieur
- meilleur utilisation des CSS (au détriment de IE, mais une simple ligne de code permet d'y remédier)
- utilisation de l'attibut display au lieu de l'attribut visibility qui déforme irrémédiablement la page.
 
Pour faire cela, je n'ai mis que 2 heures, alors que je me considère comme peu doué en ce qui concerne l'ecmascript.
 
Voici le code:

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  3. <head>
  4. <title></title>
  5. <style type="text/css">
  6. <!--
  7. #liste {
  8.  width: 160px;
  9.  border: solid 1px black;
  10.  overflow: auto;
  11.  display: none;
  12. }
  13. input {
  14.  width: 160px;
  15. }
  16. .result {
  17.  font: 0.7em Verdana, Geneva, Arial, Helvetica, sans-serif;
  18.  color: Black;
  19.  background: White;
  20. }
  21. .result:hover {
  22.  color: White;
  23.  background: #00008B;
  24. }
  25. -->
  26. </style>
  27. </head>
  28. <body onload="document.getElementById('champ').focus()">
  29. <form name="myForm" method="post" action="autocomplete.html">
  30.  <div onkeydown="return moveSelection()">
  31.   Tapez le nom d'un pays :<br />
  32.   <input type="text" autocomplete="off" name="myCombo" id="champ"
  33.   onkeyup="window.setTimeout('refreshList();', 10); return getEnterKey()" />
  34.   <div id="liste"></div>
  35.  </div>
  36.  <div>
  37.  <input type="text" onfocus="document.getElementById('liste').style.display= 'none'" />
  38.  </div>
  39. </form>
  40.  <script type="text/javascript">
  41.  <!--
  42.   var selIndex = 0;
  43.   var nbMatch = 0;
  44.   var myArray = new Array();
  45.   var content = '';
  46.   var old = '';
  47.   myArray[0] = 'Acores';
  48.   myArray[1] = 'Afghanistan';
  49.   myArray[2] = 'Afrique du Sud';
  50.   myArray[3] = 'Albanie';
  51.   myArray[4] = 'Algerie';
  52.   myArray[5] = 'Allemagne';
  53.   myArray[6] = 'Angola';
  54.   myArray[7] = 'Arabie Saoudite';
  55.   myArray[8] = 'Autriche';
  56.   myArray[9] = 'Bahrain';
  57.   myArray[10] = 'Belgique';
  58.   myArray[11] = 'Benin';
  59.   myArray[12] = 'Botswana';
  60.   myArray[13] = 'Bulgarie';
  61.   myArray[14] = 'Burkina Faso';
  62.   myArray[15] = 'Burundi';
  63.   myArray[16] = 'Cameroun';
  64.   myArray[17] = 'Centr\'Afrique';
  65.   myArray[18] = 'Chypre';
  66.   myArray[19] = 'Comorres';
  67.   myArray[20] = 'Congo';
  68.   myArray[21] = 'Cote d\'Ivoire';
  69.   myArray[22] = 'Croatie';
  70.   myArray[23] = 'Danemark';
  71.   myArray[24] = 'Djibouti';
  72.   myArray[25] = 'Egypte';
  73.   myArray[26] = 'Emirats Arabes Unis';
  74.   myArray[27] = 'Erithree';
  75.   myArray[28] = 'Espagne';
  76.   myArray[29] = 'Estonie';
  77.   myArray[30] = 'Ethiopie';
  78.   myArray[31] = 'Finlande';
  79.   myArray[32] = 'France';
  80.   myArray[33] = 'Gabon';
  81.   myArray[34] = 'Ghana';
  82.   myArray[35] = 'Grece';
  83.   myArray[36] = 'Guadeloupe';
  84.   myArray[37] = 'Guinee';
  85.   myArray[38] = 'Guinee Equatoriale';
  86.   myArray[39] = 'Guinee-Bissau';
  87.   myArray[40] = 'Guyane';
  88.   myArray[41] = 'Guyanne Francaise';
  89.   myArray[42] = 'Hongrie';
  90.   myArray[43] = 'Ile Maurice';
  91.   myArray[44] = 'Iles Canaries';
  92.   myArray[45] = 'Iles du Cap Vert';
  93.   myArray[46] = 'Iran';
  94.   myArray[47] = 'Irlande';
  95.   myArray[48] = 'Islande';
  96.   myArray[49] = 'Israel';
  97.   myArray[50] = 'Italie';
  98.   myArray[51] = 'Jordanie';
  99.   myArray[52] = 'Kenya';
  100.   myArray[53] = 'Koweit';
  101.   myArray[54] = 'Lesotho';
  102.   myArray[55] = 'Lettonie';
  103.   myArray[56] = 'Liban';
  104.   myArray[57] = 'Liberia';
  105.   myArray[58] = 'Liechtenstein';
  106.   myArray[59] = 'Lituanie';
  107.   myArray[60] = 'Luxembourg';
  108.   myArray[61] = 'Madagascar';
  109.   myArray[62] = 'Madere';
  110.   myArray[63] = 'Malawi';
  111.   myArray[64] = 'Mali';
  112.   myArray[65] = 'Malte';
  113.   myArray[66] = 'Maroc';
  114.   myArray[67] = 'Martinique';
  115.   myArray[68] = 'Mauritanie';
  116.   myArray[69] = 'Monaco';
  117.   myArray[70] = 'Mozambique';
  118.   myArray[71] = 'Namibie';
  119.   myArray[72] = 'Niger';
  120.   myArray[73] = 'Nigeria';
  121.   myArray[74] = 'Norvege';
  122.   myArray[75] = 'Nouvelle Caledonie';
  123.   myArray[76] = 'Oman';
  124.   myArray[77] = 'Ouganda';
  125.   myArray[78] = 'Papouasie-Nouvelle Guinee';
  126.   myArray[79] = 'Pays-Bas';
  127.   myArray[80] = 'Pologne';
  128.   myArray[81] = 'Polynesie Francaise';
  129.   myArray[82] = 'Portugal';
  130.   myArray[83] = 'Qatar';
  131.   myArray[84] = 'Republique Populaire du Congo';
  132.   myArray[85] = 'Republique Tcheque';
  133.   myArray[86] = 'Reunion';
  134.   myArray[87] = 'Roumanie';
  135.   myArray[88] = 'Royaume Uni';
  136.   myArray[89] = 'Russie';
  137.   myArray[90] = 'Rwanda';
  138.   myArray[91] = 'Saint Marin';
  139.   myArray[92] = 'Saint Pierre et Miquelon';
  140.   myArray[93] = 'Senegal';
  141.   myArray[94] = 'Sierra Leone';
  142.   myArray[95] = 'Slovaquie';
  143.   myArray[96] = 'Slovenie';
  144.   myArray[97] = 'Somalie';
  145.   myArray[98] = 'Soudan';
  146.   myArray[99] = 'Suede';
  147.   myArray[100] = 'Suisse';
  148.   myArray[101] = 'Swaziland';
  149.   myArray[102] = 'Syrie';
  150.   myArray[103] = 'Tanzanie';
  151.   myArray[104] = 'Tchad';
  152.   myArray[105] = 'Togo';
  153.   myArray[106] = 'Tunisie';
  154.   myArray[107] = 'Turquie';
  155.   myArray[108] = 'Ukraine';
  156.   myArray[109] = 'Yemen';
  157.   myArray[110] = 'Yougoslavie';
  158.   myArray[111] = 'Zambie';
  159.   function fillInput(i)
  160.   {
  161.    document.getElementById('champ').value = myArray[i];
  162.    document.getElementById('liste').style.display= 'none';
  163.    document.getElementById('champ').focus();
  164.   }
  165.   function refreshList()
  166.   {
  167.    if(document.getElementById('champ').value != old)
  168.    {
  169.     old=document.getElementById('champ').value;
  170.     document.getElementById('liste').innerHTML = '';
  171.     if (document.getElementById('champ').value.length > 0)
  172.     {
  173.      nbMatch = 0;
  174.      content='';
  175.      for (var i=0; i < myArray.length; i++)
  176.      {
  177.       if (myArray[i].slice(0, document.getElementById('champ').value.length).toUpperCase() == document.getElementById('champ').value.toUpperCase())
  178.       {
  179.        nbMatch++;
  180.        content += '<div id="' + nbMatch + '" class="result" onclick="fillInput(' + i + ')">' + myArray[i] + '</div>';
  181.       }
  182.      }
  183.      if (nbMatch)
  184.      {
  185.       document.getElementById('liste').innerHTML = content;
  186.       document.getElementById('liste').style.height = (Math.min(5, nbMatch)) + 'em';
  187.       document.getElementById('liste').style.display = 'block';
  188.       selIndex=0;
  189.      }
  190.      else
  191.       document.getElementById('liste').style.display = 'none';
  192.     }
  193.     else
  194.     {
  195.      document.getElementById('liste').style.display = 'none';
  196.     }
  197.    }
  198.   }
  199.   function moveSelection()
  200.   {
  201.    if (event.keyCode == 40)
  202.    {
  203.     if (selIndex > 0 && selIndex < nbMatch)
  204.     {
  205.      document.getElementById(selIndex).style.backgroundColor = 'white';
  206.      document.getElementById(selIndex).style.color = 'black';
  207.     }
  208.     if (selIndex < nbMatch)
  209.     {
  210.      selIndex++;
  211.      document.getElementById(selIndex).style.backgroundColor = 'darkblue';
  212.      document.getElementById(selIndex).style.color = 'white';
  213.      document.getElementById(selIndex).focus();
  214.     }
  215.     return false;
  216.    }
  217.    else if (event.keyCode == 38)
  218.    {
  219.     if (selIndex > 1)
  220.     {
  221.      document.getElementById(selIndex).style.backgroundColor = 'white';
  222.      document.getElementById(selIndex).style.color = 'black';
  223.     }
  224.     if (selIndex > 1 && selIndex <= nbMatch)
  225.     {
  226.      selIndex--;
  227.      document.getElementById(selIndex).style.backgroundColor = 'darkblue';
  228.      document.getElementById(selIndex).style.color = 'white';
  229.     }
  230.     return false;
  231.    }
  232.    return getEnterKey();
  233.   }
  234.   function getEnterKey()
  235.   {
  236.    if (event.keyCode == 13)
  237.    {
  238.     if (selIndex > 0)
  239.     {
  240.      document.getElementById('champ').value = document.getElementById(selIndex).innerText;
  241.      document.getElementById('liste').style.display = 'none';
  242.      old=document.getElementById(selIndex).innerText
  243.     }
  244.     return false;
  245.    }
  246.    else
  247.    {
  248.     return true;
  249.    }
  250.   }
  251.  -->
  252.  </script>
  253. </body>
  254. </html>

 
 
Peut-être qu'après cela, Magic arrètera enfin de critiquer les outils sans remettre en cause celui qui les utilise...

Reply

Marsh Posté le 15-07-2003 à 01:31:03   

Reply

Marsh Posté le 15-07-2003 à 01:48:08    

intérressant [:drapo]


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 15-07-2003 à 09:45:18    

MagicBuzz a écrit :


Ton truc est bien, mais quand on clique ailleurs dans la page pour virer la liste, bah ça disparaît pas :p
 
Et si tu rajoute un onblur pour traîter ça, tu sera confronté au même problème que moi... Ta version je l'ai eu au bout de 10 minutes... Le souci c'est après, pour faire un truc "fini".


Si tu testes correctement ta version, tu verras que si on cliques sur un endroit qui n'est pas dans le prolongement horizontal de ta liste, celle-ci ne disparait pas non plus. on n'est donc limité un une petite bande de 60px chez toi.
Par contre, chez moi, vu que ceci sert au remplissage d'un formulaire, la liste disparait dès que l'input suivant est sélectionné (il se peut que ce soit le submit), ce qui est nettement plus logique d'un point de vue utilisation.
 
Avoir un produit fini, c'est aussi penser à la manière dont les gens vont l'utiliser une fois intégré.

Reply

Marsh Posté le 15-07-2003 à 11:40:53    

MagicBuzz a écrit :

Bah je sais pas avec quelle version de quel navigateur tu as testé, mais avec IE, quand tu cliques n'importe où, ça disparaît. Au pire, c'est aisément corrigeable sous les autres navigateurs, il suffit de forcer le body à prendre toute la place à l'écran, ce que IE fait par défaut.
Testé avec IE 6, mais en rajoutant autre chose que ton simple input. S'il est tout seul, ca marche, dès que l'on rajoute autre chose, ca foire. Or un input tout seul, tu conviendras aisément que son utilisation est assez limitée
 
Sinon, pour moi, un produit fini, c'est pas un produit dont l'ergonomie est celle que tu as choisi, mais qui s'adapte à l'exstant. Quelque soit les applis qui possèdent ce genre de liste modifiable, la liste disparaît systématiquement lorsque tu cliques ailleurs dans l'écran.
non, justement, et c'est pourquoi ma solution est au moins aussi efficace que la tienne dans ce domaine
 
Ton truc est idiot, car imagine que la liste soit seule à l'écran avec un bouton submit.
 
Je commence à taper un truc, et mince, j'en veux plus, je veux faire disparaître la liste afin de voir le petit texte explicatif qui a éventuellement été glissé sous le champ. Ben je suis comme un con.
rien ne disparait sous ma liste, vu qu'elle est sur le même z-index que le flux normal, le texte qui se trouverait en dessous aura simplementent été décalévers le bas. Un simple test de ma solution t'aurais permis de le constater. J'en déduis donc que tu critiques sans avoir essayé.
 
Et sinon, niveau mise en page, je viens de m'appercevoir que ton truc est merdique : la liste fait tout décaller vers le bas... Super si j'ai une mise en page au pixel près... Dès que je vais taper un truc, j'ai toute la mise en page qui va sauter.
C'est exactement la même chose chez toi... Je commence à me demander si tu as testé ton propre script.
 
M'enfin bon, c'est pas grave. Je pense qu'en adaptant les deux solutions ensemble, y'a de quoi faire un truc correct.
 
Vu que j'ai rien à foutre au taff aujourd'hui, je vais m'y coller :)
Enfin!
 
PS: sinon, ma mauvaise fois d'hier a eu raison : c'est le meilleur moyen pour "forcer" des personnes à vouloir me contredire, et pour ce faire, elles doivent se pencher sur le problème et me prouver que j'ai tord en refaisant ce que je dis qui ne fonctionne pas. Du coup, bah t'as posté une solution à mon problème :D
Quelle mentalité de merde. Avec des raisonnements pareils on pourrait excuser les racistes qui serviraient de moteur aux arabes/noirs/juifs/... (biffer la mention inutile) afin qu'ils se surpassent pour montrer qu'ils sont l'égal de ceux-là.

Reply

Marsh Posté le 15-07-2003 à 11:55:22    

[:blueflag]

Reply

Marsh Posté le 15-07-2003 à 12:02:38    


+1, intéressant :)

Reply

Marsh Posté le 15-07-2003 à 12:07:33    

Bon on reprend dans l'ordre:
 
- NS 6.2, ca utilise quel moteur Gecko? parce que je n'ai que la 1.3.1 et 1.4 ici. Et le click n'est pas propagé, que l'on clique sur les flèches ou sur l'ascenseur.
 
- Remplir les champs dans l'ordre? quelle importance! il suffit d'adjoindre le onfocus que j'ai mis dans le deuxième input à chaque input. Mieux, il suffit de faire une fonction qui fait disparaitre l'ensemble des listes lorque l'on clique sur un input.
Encore une fois, tu poses de faux problèmes.
 
- mon truc n'est pas 100% limité, je t'ai montré toutes les erreurs du tien et les aie corrigéeS, je ne vois pas en quoi le mein serait plus limité par la même occasion.

Reply

Marsh Posté le 15-07-2003 à 12:31:00    

Si on devait parler de généricité, on utiliserait les éléments DOM2-qui-vont-bien, hors ceux-ci ne sont pas encore supportés par les navigateurs actuels (même IE), donc ce terme n'a pas sa place ici. En outre, ca te va bien de parler de généricité quand tu ecris ce genre de chose dans ton script:
 

Code :
  1. navigator.userAgent.indexOf('MSIE') >= 0)

 
 
La question de la propreté, je te la retourne également. D'une part tu utilises des fonctions qui ne sont pas standards (event.keyCode par exemple, que j'ai vonlontairement laisser pour garder un petit "plus" à IE), d'autre part, tu dois annuler des event qui n'ont rien à voir avec l'action courrante. Alors avant de critiquer la brindille dans l'oeil du voisin...
 
Pour ce qui est de la réutilisabilité et de la maintenance, comme on peut tout regrouper dans une fonction, tu te fais un simple template que tu copies/colles. Ca te prend 10 sec. montre en main.
 
Pour ce qui est de l'évolutivité, ca viendra quand les navigateur utiliseront correctement le DOM2 (peut-être quand le DOM3 sortira [:gizmo] ) Mais de ce côté là, on est tranquille avec IE qui ne sera vraissemblablement pas renouvelé avant 2005 (et encore).

Reply

Marsh Posté le 15-07-2003 à 12:51:02    

MagicBuzz a écrit :

Bah je sais pas avec quelle version de quel navigateur tu as testé, mais avec IE, quand tu cliques n'importe où, ça disparaît. Au pire, c'est aisément corrigeable sous les autres navigateurs, il suffit de forcer le body à prendre toute la place à l'écran, ce que IE fait par défaut.
 
Sinon, pour moi, un produit fini, c'est pas un produit dont l'ergonomie est celle que tu as choisi, mais qui s'adapte à l'exstant. Quelque soit les applis qui possèdent ce genre de liste modifiable, la liste disparaît systématiquement lorsque tu cliques ailleurs dans l'écran.
 
Ton truc est idiot, car imagine que la liste soit seule à l'écran avec un bouton submit.
 
Je commence à taper un truc, et mince, j'en veux plus, je veux faire disparaître la liste afin de voir le petit texte explicatif qui a éventuellement été glissé sous le champ. Ben je suis comme un con.
 
Et sinon, niveau mise en page, je viens de m'appercevoir que ton truc est merdique : la liste fait tout décaller vers le bas... Super si j'ai une mise en page au pixel près... Dès que je vais taper un truc, j'ai toute la mise en page qui va sauter.
 
M'enfin bon, c'est pas grave. Je pense qu'en adaptant les deux solutions ensemble, y'a de quoi faire un truc correct.
 
Vu que j'ai rien à foutre au taff aujourd'hui, je vais m'y coller :)
 
PS: sinon, ma mauvaise fois d'hier a eu raison : c'est le meilleur moyen pour "forcer" des personnes à vouloir me contredire, et pour ce faire, elles doivent se pencher sur le problème et me prouver que j'ai tord en refaisant ce que je dis qui ne fonctionne pas. Du coup, bah t'as posté une solution à mon problème :D

ca t'arrive de respecter le travail des autres ?  :sarcastic:


---------------
lecteur mp3 yvele's smilies jeux de fille
Reply

Marsh Posté le 15-07-2003 à 13:00:34    

MagicBuzz a écrit :

Sinon, pour NS 6.2 c'est ça : (je sais pas où je peux trouver une info plus précise)
 
Mozilla/5.0 (Windows; U; Windows NT 5.0; fr-FR; rv:0.9.4) Gecko/20011019 Netscape6/6.2  


 
Ok, je viens de tester avec Mozilla 0.9.4 et je n'ai pas le bug que tu décris. Donc, j'en déduis que soit c'est un bug propre à l'implémentation de NS6.2, soit tu as des problèmes de tremblotte et tu cliques à côté.

Reply

Marsh Posté le 15-07-2003 à 13:02:45    

forummp3 a écrit :

ca t'arrive de respecter le travail des autres ?  :sarcastic:  


a la base c'est quand même lui qui l'a fait  :heink:

Reply

Marsh Posté le 15-07-2003 à 13:10:20    

et le même topic, l'aggressivité en moins, c'est possible ?

Reply

Marsh Posté le 15-07-2003 à 13:11:48    

[:theepsilon]

Reply

Marsh Posté le 15-07-2003 à 13:20:44    

lorill a écrit :

et le même topic, l'aggressivité en moins, c'est possible ?


 
Meuh non, regarde les, ils s'aiment, ils s'empoignent, se serrent l'un contre l'autre et se frotte furieusement le corps, c'Est l'amour [:violette]

Reply

Marsh Posté le 15-07-2003 à 13:31:23    

MagicBuzz, explique moi pourquoi 90% de tes topics finissent en pugilat ? :pfff:
J'en connais un qui va avoir droit au goudron et aux plumes le 09/08 !


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-07-2003 à 14:20:56    

d'un autre côté NS 6.2 c'est basé sur Mozilla 0.7 ou un truc du genre, c'est à dire un soft en développement, même pas qualifié de version "alpha"


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-07-2003 à 14:49:05    

antp >> mozilla 0.9.4 pour NS 6.2 (cf l'info de Magic)
 

MagicBuzz a écrit :

Bah moi j'en sais rien.
 
Peut-être parceque j'ai pas la même notion du mot "généricité" et "propreté" que la plupart des membres de ce forum...
 
Que je sâche, la généricité, c'est générique. Qui dit générique, dit s'adapte à toutes les situations. C'est pas en respectant les standard qu'on peut arriver à la généricité, puisque les standards sont très souvent transgressés, parfois même pas ceux qui le fixent (il suffit de voir Oracle et le SQL par exemple).
Ben c'est là ton gros problème, c'est que tu confonds générique avec bidouillage. La généricité, c'est ce qui est COMMUN aux divers éléments que tu compares.
 
Alors quand dans un code il y a indexOf('MSIE') oui, justement, c'est générique, parceque le script va adapter son comportement selon la plateforme.
ca c'est tout le contraire de la généricité, encore une fois, on est en plein dans le spécifique
 
Sinon, Gizmo, t'iras m'expliquer comment tu vas même des "onfocus" sur tous les champs de ta page depuis une fonction... Si tu sais faire (supporté par tous les navigateurs, je te vois déjà venir avec l'implémentation d'évènement depuis les scripts)
ça hé bien je suis preneur. C'est autrement plus simple de récupérer les évènement dans le body, puisqu'il va hériter de tous les évènements de la page. Ainsi, on ne touche pas une ligne du reste de la page... C'est quand même plus propre non ?
Tu as mal compris ma phrase. Je parle de faire pointer tous les onfocus des input vers une même fonction, pas de faire une fonction qui catch automatiquement les focus pour en déterminer l'id. J'ai cherché un attribut un attribut qui ferait l'équivalent du isfocused d'actionscript mais je n'en n'ai pas trouvé. Ca, ce serait le solution idéal, tester si un élément à le focus sans le lui assigner d'office, plutôt que de passer par le body
 
Pour finir, moi quand je fais un truc, je regarde ce qui existe déjà, et je fais en sorte qu'il se comporte pareil, je cherche pas à faire un bout de plagiat juste pour dire que je sais faire pareil. Je l'implémente jusqu'au bout.
Qué? qui parle de plagiat ici. Je n'ai jamais nié être partit de ton script. Seulement, je suis partit de ce qu'il était censé faire, j'ai gardé ce qui pouvait être util (ca sert à rien de ré-inventer la roue) et j'ai remplacer les parties de code qui foiraient pour que cela marche dans les différents browsers
 
Quand je vois par exemple les menus de NS 6.2 qui ne sont pas écrits en utilisant les bibliothèques WIN32, soit, mais quand je fois qu'on ne peux pas aller d'un champ à l'autre en appuyant sur TAB, bah excuse-moi, mais j'appelle ça du travail de porc. Et ce que tu as fais avec ce système de onfocus l'est aussi.
Faudrait voir à apprendre le HTML aussi... Tabindex, c'est pas fait pour les chiens. Et le système du focus est généralisable, je te l'ai déjà dit.
 
 
Bon, maintenant, j'ai quasi-fini le truc, y'a juste NS qui merde à plein tube sur un détail, mais dans nos deux versions initiales ça marche, donc à priori, c'est une couille quelque part. Dès que c'est fini, je passe ça en include JS et je le poste ici.
Ok, j'attend cette nouvelle version avec impatience

Reply

Marsh Posté le 15-07-2003 à 14:57:02    

MagicBuzz a écrit :

T'ain... C'est encore mieu :sweat:
 
J'avais oublié... C'est NS 6 qui sait pas manipuler depuis le javascript des balises écrites avec ".innerHTML" :sweat:
 
Hmpf... Bah ça pourra jamais marcher sous NS 6... Je vois pas comment faire... A moins de... Ha... Si, j'ai bien une solution... Bon, à dans 2 heures :D


 
gni? A moins que ce soit ma version de mozila 1.3.1 qui court-circuite la version 0.9.4, le javascript écrit au sein de balise écrite avec innerHTML fonctionne puisque mon script comme ton original fonctionnent.

Reply

Marsh Posté le 15-07-2003 à 15:07:47    

Firebird 0.6 (gecko 1.4): ok
IE 6.0: ok
Opera: failed
 
Je regarderai ce soir si je vois pourquoi.

Reply

Marsh Posté le 15-07-2003 à 15:12:18    

NS 7.1 OK


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 15-07-2003 à 15:23:02    

MagicBuzz a écrit :

c'est pour cette raison que je me suis frité avec chais pu qui quand j'ai dis que NS supportait pas l'ajout en live d'options dans une combobox.


 
gm_superstar ou gizmo je suppose :D
 
bah NS 6.2 c'est vieux, ils n'auraient jamais dû sortir de versions avant Mozilla 1 (NS 7) je trouve. Ça a contribué à l'image "NS4 c'était un vieux brol léger, maintenant y a un nouveau truc mais il est super lourd et ne fonctionne pas mieux"


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-07-2003 à 16:38:33    

:jap: ça marche nettement mieux que la 1e version


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-07-2003 à 16:58:13    

la version qui est en ligne marche pourtant nickel dans Mozilla 1.3 [:spamafote]
(y compris la sélection au clavier, qui ne fonctionnait pas dans la 1e version)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-07-2003 à 16:58:45    

MagicBuzz a écrit :

:heink:
 
Mon Opera est complètement à la ramasse...
 
Tout à l'heure, ça fonctionnait (enfin, ça buggait, mais la liste apparaîssait quand même) et tout à coup, freeze total, je ne peux pas saisir quoique ce soit dans le champ :??:
 
Chelou...
 
Bon, ce PC à définitivement trop de problèmes de partout :D
 
Verrai ce soir avec mon PC qui marche :D


non, ca fait pareil chez moi, ca vient pas de ton pc :D

Reply

Marsh Posté le 15-07-2003 à 20:27:02    

En effet, c'est vraiment bizare. Mais sinon ca marche très bien (à part les flèches car il a sa propre auto-complétion, mais ca c'est normal)
 
Félicitation. [:xp1700]
 
Il y a une version online du définitif? (sur le lien je tombe toujours sur l'ancienne version) Comme ça on peut envoyer un bug report à opera.

Reply

Marsh Posté le 15-07-2003 à 20:35:31    

maintenant oui [:ddr555]  
 
Sinon, pour le autocomplete, il n'y a pas d'équivalent sous opéra car les seules complétions qu'il autorise (excepté la gestion des mots de passes), concerne les infos rentrées dans le profil et les notes.
 
Par contre, le bug de l'ascenseur, je ne vois pas. avec ou sans le div fait la même taille, soit un peu plus que l'input avec ses bords par défaut.

Reply

Marsh Posté le 15-07-2003 à 20:42:24    

ah oui, j'avais pas vu.

Reply

Marsh Posté le 15-07-2003 à 21:23:34    

C'est bien, mais pour ce qui est de l'accessibilité il faudra repasser : si je n'ai pas JavaScript d'activé ou si j'uilise un navigateur texte, je n'ai pas la liste d'options...
 
Use <noscript> Luke :o


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 15-07-2003 à 22:50:43    

c'est sans doute parce que les autres ont une vie en dehors [:ddr555]

Reply

Marsh Posté le 15-07-2003 à 22:51:53    

MagicBuzz a écrit :

Sinon, de toute façon, tu t'en fout, à la base c'est une liste de saisie mais dont le texte est libre, donc vu que tu as un champ texte, même sans liste de choix, ça marchera sans problème, y'a juste que t'auras pas la liste de choix déjà existants.


OK, je pensais que les choix étaient imposés dans la liste :jap:


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 15-07-2003 à 22:57:04    

Bon, testé et approuvé par Moi sur IE6.0SP1 et NS7.1 !
Mais...
 
La gestion des flèches fonctionnent dans la liste, mais apparement tu utilises onKeyUp, ce qui fait que la répétition des touches n'est pas gérée, ni les touches Home, End, PageUp et PageDown !
 
Bref, c'est pas mal... :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed