Capitalisation de fonctions JS

Capitalisation de fonctions JS - HTML/CSS - Programmation

Marsh Posté le 07-12-2002 à 18:56:22    

Salut,
 
Bon je suis souvent amené à effectuer des développements en JS entre autres et je me demandais si ça ne serait pas une bonne idée de "capitaliser" les fonctions réutilisables en JS dont tout le monde pourrait avoir besoin.
 
Si je dis ça, c'est parceque c'est chiant de devoir toujours mettre à jour ses listes de fct JS dans son coin alors que si on met ça en accès sur le forum, c'est accessible de partout et pour tout le monde...
 
Qu'en pensez-vous ???

Reply

Marsh Posté le 07-12-2002 à 18:56:22   

Reply

Marsh Posté le 07-12-2002 à 19:03:36    

que c'est une idée louable, mais pas forcément réaliste.
on n'a pas les memes besoins

Reply

Marsh Posté le 07-12-2002 à 19:06:02    

Oui c'est vrai que les besoins sont rarement les mêmes mais il y a toujours certaines fonctions qui sont utilisées par tout le monde, je pense aux fonctions de manipulations de String, aux vérifications de dates, de format d'adresses mails, etc...
 
Toujours pas convaincu ???  :(  
 

Reply

Marsh Posté le 07-12-2002 à 19:08:58    

pas tellement, non. ceci dit, que ca ne t'empeche surtout pas de le lancer, c'est pas parce que je n'y vois pas d'interet qu'il n'y en a pas.
 
en plus dans mon cas, je dois encapsuler ces fonctions dans des taglibs pour simplifier la vie des developpeurs, qui n'ont du coup que leurs jsp & servlets a maintenir.

Reply

Marsh Posté le 07-12-2002 à 19:28:58    

Bon ben si je fais un flop, je m'en fous après tout  :D  
 
Méthode de manipulation de champ
 

Code :
  1. /* --------------------------------------------------------------- */
  2. /* Teste si le champ dont le nom est passé en paramètre est        */
  3. /* alimenté dans le formulaire ...                                 */
  4. /* --------------------------------------------------------------- */
  5. function isPresent(pElem) {
  6. var element = window.document.forms[0].elements[pElem];
  7. switch(element.type) {
  8.  case 'hidden' : return (element.value != '');
  9.  case 'password' : return (element.value != '');
  10.  case 'text' : return (element.value != '');
  11.  case 'textarea' : return (element.value != '');
  12.  case 'select-one' : return ((element.selectedIndex != -1) && (element.options[element.selectedIndex].value != ''));
  13.  case 'checkbox' : return (element.checked);
  14.  case 'radio' : return (element.checked);
  15.  default : for(var k=0 ; k<element.length ; k++) { if (element[k].checked) { return true; } }
  16. }
  17. return false;
  18. }


 
Méthode de manipulation de chaînes de caractères
 

Code :
  1. /* --------------------------------------------------------------- */
  2. /* Retourne la partie gauche d'une chaîne de caractères sur n      */
  3. /* positions                                                       */
  4. /* --------------------------------------------------------------- */
  5. function left(pString, pLen) {
  6. return pString.substr(0, pLen);
  7. }
  8. /* --------------------------------------------------------------- */
  9. /* Retourne la partie droite d'une chaîne de caractères sur n      */
  10. /* positions                                                       */
  11. /* --------------------------------------------------------------- */
  12. function right(pString,pLen) {
  13. return pString.substr(pString.length - pLen, pLen);
  14. }
  15. /* --------------------------------------------------------------- */
  16. /* Complète une chaîne (un nombre) sur pLen caractères avec des    */
  17. /* zéros à gauche                                                  */
  18. /* --------------------------------------------------------------- */
  19. function padNumber(pN,pLen) {
  20. str = new String(pN);
  21. while (str.length < pLen) { str = "0" + str; }
  22. return str;
  23. }


 
Méthodes de manipulation de dates
 

Code :
  1. /* --------------------------------------------------------------- */
  2. /* Retourne la date du jour sous la forme JJ/MM/SSAA               */
  3. /* --------------------------------------------------------------- */
  4. /* Fonction stand-alone !                                          */
  5. /* --------------------------------------------------------------- */
  6. function getToday() {
  7.     myDat = new Date();
  8.     JJ = myDat.getDate();
  9.     JJ = (JJ < 10 ? "0" + JJ : "" + JJ);
  10.     MM = myDat.getMonth() + 1;
  11.     MM = (MM < 10 ? "0" + MM : "" + MM);
  12.     SSAA = myDat.getFullYear();
  13.     return JJ + "/" + MM + "/" + SSAA;
  14. }
  15. * --------------------------------------------------------------- */
  16. /* Retourne un tableau avec tous les jours fériés de l'année       */
  17. /* pAnnee sous la forme JJ/MM                                      */
  18. /* --------------------------------------------------------------- */
  19. function getTousFeries(pAnnee) {
  20. tabFeriesFixes = "01/01.01/05.08/05.01/11.11/11.14/07.15/08.25/12";
  21. AA = parseInt(pAnnee,10);
  22. JOUR = 1000 * 60 * 60 * 24;
  23. NbOr = (AA % 19) + 1;
  24. S1 = Math.floor(AA/100);
  25. S2 = Math.floor((2 + S1) * 3/7);
  26. Epacte = (11 * NbOr - (3 + S2)) % 30;
  27. Delta = (Epacte + 6) % 30;
  28. PLune = new Date(AA, 3, 19-Delta);   // 19 Avril de l'année AA
  29. if (Epacte == 24) { PLune = new Date(PLune.valueOf() - JOUR); }
  30. if ((Epacte == 25) && (AA >= 1900 && AA < 2000)) { PLune = new Date(PLune.valueOf() - JOUR); }
  31. Paques = new Date(PLune.valueOf() - (PLune.getDay() * JOUR) + 8 * JOUR);
  32. tabTousFeries = tabFeriesFixes + "." + padNumber(Paques.getDate(), 2) + "/" + padNumber(Paques.getMonth()+1,2);
  33. Ascension = new Date(Paques.valueOf() + 38*JOUR);
  34. tabTousFeries += "." + padNumber(Ascension.getDate(), 2) + "/" + padNumber(Ascension.getMonth()+1, 2);
  35. Pentecote = new Date(Ascension.valueOf() + 11*JOUR);
  36. tabTousFeries += "." + padNumber(Pentecote.getDate(), 2) + "/" + padNumber(Pentecote.getMonth()+1, 2);
  37. return tabTousFeries.split("." );
  38. }
  39. /* --------------------------------------------------------------- */
  40. /* Compare les deux dates pDate1 et pDate2 et retourne 0, <0 ou >0 */
  41. /* Les paramètres pDate1 et pDate2 sont des chaînes de caractères  */
  42. /* au format JJ/MM/SSAA OBLIGATOIREMENT !                          */
  43. /* --------------------------------------------------------------- */
  44. /* Fonction stand-alone !                                          */
  45. /* --------------------------------------------------------------- */
  46. function compareDates(pDate1, pDate2) {
  47.     dat1 = parseInt(new String(pDate1).split("/" ).reverse().join("" ), 10);
  48.     dat2 = parseInt(new String(pDate2).split("/" ).reverse().join("" ), 10);
  49.     return dat1 - dat2;
  50. }


Message édité par machinbidule1974 le 09-12-2002 à 11:43:34
Reply

Marsh Posté le 08-12-2002 à 18:50:53    

Moi jai plein de fonction pour manipuler les <DIV>
 

Code :
  1. var ns4 = (document.layers)? true:false; //détéction du browser
  2. var ie4 = (document.all)? true:false;
  3. var dom = (document.getElementById)? true:false; //window.sidebar fonctionne aussi ... mieux ?
  4. var NbImage = 0;
  5. var Img = new Array();
  6. var Loading = false;
  7. function MoveWin(name,X,Y)
  8. {
  9. if (ie4 || dom)
  10.    {
  11.     name.moveTo(X,Y)
  12.  }
  13. }
  14. function ChangeLayer(id,HTML)
  15. {
  16. if (ie4)//marche aussi avec Opera 7. il faudrait faire un meilleur test
  17.    {
  18.  document.getElementById(id).innerHTML = HTML;
  19.  }
  20. /*else if (ns4)
  21.    {
  22.     document.open();
  23.     document.write("caca" );
  24.  document.close();
  25.  document.layers[id].write = HTML;
  26.  }*/
  27. }
  28. function HideOverflow()
  29. {
  30. document.body.style.overflow='hidden';
  31.   }
  32.  
  33. function ChangeImg(name,newsrc)//marche pas terrible pour l'instant, en dévellopement
  34. {
  35.   if(document.images)
  36.    {
  37.     if(Loading == false)
  38.      {
  39.       Img[NbImage] = new Image();
  40.      Img[NbImage].src = newsrc;
  41.   Loading=true;
  42.       eval("TimeoutID = window.setTimeout(\"ChangeImg('"+name+"','"+newsrc+"')\",200);" );
  43.   }
  44.  else
  45.      {
  46.      
  47.       if(Img[NbImage].complete==true)
  48.        {
  49.         //document.images[name].src = Img[NbImage].src;
  50.       eval("document."+name+".src = Img[NbImage].src;" );
  51.         NbImage = NbImage + 1;
  52.        Loading = false;
  53.         }
  54.         else
  55.          {
  56.          eval("TimeoutID = window.setTimeout(\"ChangeImg('"+name+"','"+newsrc+"')\",200);" );
  57.     }
  58.      }
  59.  }
  60. }
  61. function GetObj(id)//renvoie un identifiant manipulable
  62. {
  63.   if (dom)
  64.    {
  65.  return document.getElementById(id);
  66.  }
  67. else if (ie4)
  68.    {
  69.  return document.all[id];
  70.  }
  71. else if (ns4)
  72.    {
  73.  return document.layers[id];
  74.  }
  75.   else
  76.    {
  77.     return false;
  78.    }
  79.   }
  80. function HideLayer(id)//rend invisible un layer
  81. {
  82. if (dom)
  83.    {
  84.  document.getElementById(id).style.visibility = "hidden";
  85.  }
  86. else if (ie4)
  87.    {
  88.  document.all[id].style.visibility = "hidden";
  89.  }
  90. else if (ns4)
  91.    {
  92.  document.layers[id].visibility = "hide";
  93.  }
  94. }
  95. function ShowLayer(id)//affiche un layer
  96. {
  97. if (dom)
  98.    {
  99.  document.getElementById(id).style.visibility = "visible";
  100.  }
  101. else if (ie4)
  102.    {
  103.  document.all[id].style.visibility = "visible";
  104.  }
  105. else if (ns4)
  106.    {
  107.  document.layers[id].visibility ="show";
  108.  }
  109. }
  110. function MoveLayerX(id,X)//déplace un layers
  111. {
  112. if (dom)
  113.    {
  114.  document.getElementById(id).style.left = X;
  115.  }
  116. else if (ie4)
  117.    {
  118.  document.all[id].style.posLeft = X;
  119.  }
  120. else if (ns4)
  121.    {
  122.  document.layers[id].pageX = X;
  123.  }
  124. }
  125.  
  126. function MoveLayerY(id,Y)//déplace un layer vertivalement
  127. {
  128. if (dom)
  129.    {
  130.  document.getElementById(id).style.top = Y;
  131.  }
  132. else if (ie4)
  133.    {
  134.  document.all[id].style.posTop = Y;
  135.  }
  136. else if (ns4)
  137.    {
  138.  document.layers[id].pageY = Y;
  139.  }
  140. }
  141. function MoveLayer(id,X,Y)//déplace un layer horizontalement
  142. {
  143. if (dom)
  144.    {
  145.  document.getElementById(id).style.left = X;
  146.  document.getElementById(id).style.top = Y;
  147.  }
  148. else if (ie4)
  149.    {
  150.  document.all[id].style.posLeft = X;
  151.  document.all[id].style.posTop = Y;
  152.  }
  153. else if (ns4)
  154.    {
  155.  document.layers[id].pageX = X;
  156.  document.layers[id].pageY = Y;
  157.  }
  158. }
  159.  
  160.   function getLeft(MyObject)
  161. {
  162. if (dom || ie4)
  163.  {
  164.     if (MyObject.offsetParent)
  165.         return (MyObject.offsetLeft + getLeft(MyObject.offsetParent));
  166.     else
  167.         return (MyObject.offsetLeft);
  168.     }
  169. if (ns4)
  170.  {
  171.  return (MyObject.x);
  172.  }
  173. }
  174. function getTop(MyObject)
  175. {
  176. if (dom || ie4)
  177.  {
  178.  if (MyObject.offsetParent)
  179.   return (MyObject.offsetTop + getTop(MyObject.offsetParent));
  180.  else
  181.   return (MyObject.offsetTop);
  182.  }
  183. if (ns4)
  184.  {
  185.  return (MyObject.y);
  186.  }
  187. }
  188. function AnchorLayer(id,AnchorId)//positionne un layer par rapport à une ancre. ne pas oublier id et name dans l'encre
  189. {
  190. var Anchor;
  191. if (dom)
  192.    {
  193.  Anchor = document.getElementById(AnchorId);
  194.  }
  195. else if (ie4)
  196.    {
  197.  Anchor = document.all[AnchorId];
  198.  }
  199. else if (ns4)
  200.    {
  201.     Anchor = document.anchors[AnchorId];
  202.     }
  203. MoveLayer(id,getLeft(Anchor),getTop(Anchor));
  204. }
  205. function out(id)//cache un layer après un compte à rebours, utile pour des menus
  206. {
  207. eval("window.time"+id+" = window.setTimeout(\"hidelayer('"+id+"')\", 800);" );
  208. }
  209. function over(id)//annule le compte à rebours
  210. {
  211. showlayers(id);
  212. if(eval("window.time"+id)){
  213.  window.clearTimeout(eval("window.time"+id));
  214.  }
  215. }


Message édité par The Kinetics le 08-12-2002 à 18:56:41
Reply

Marsh Posté le 08-12-2002 à 18:51:04    

Je cherche un outil gratuit et bien fait pour faire du HTML/JS ... EN ce moment j'utilise HTML-KIT ... IL souffre de nombreux défault(à mon goût), je cherche quelquechose de plus simple et de plus efficace ! :hello:


Message édité par The Kinetics le 08-12-2002 à 19:00:56
Reply

Marsh Posté le 08-12-2002 à 20:07:46    

The Kinetics a écrit :

Je cherche un outil gratuit et bien fait pour faire du HTML/JS ... EN ce moment j'utilise HTML-KIT ... IL souffre de nombreux défault(à mon goût), je cherche quelquechose de plus simple et de plus efficace ! :hello:  


 
ConTEXT, plus simple tu meurs, et il contient tout ce qu'il faut pour faire du HTML, du JS, du PHP etc...
 
Enfin, mon avis est que tout devrait se situer du côté serveur. Les applications en javascript, j'en vois pas bcp de vraiment utile et de toutes façon, il faut bien s'assurer qu'avec la désactivation du JS, on a pas de problème.
 
Bref, le js, c'est juste pour du superflu...
 
Par exemple, il ne me viendrait plus à l'idée de vérifier un formulaire avec du JS.

Reply

Marsh Posté le 08-12-2002 à 21:15:53    

Hermes le Messager a écrit :


 
Bref, le js, c'est juste pour du superflu...
 


 
 
 [:tecoswsn] c'est c'la, rouiiii


---------------
Que Viva Galicia y España [Quand on a pas ce que l'on aime, il faut aimer ce que l'on a!]
Reply

Marsh Posté le 08-12-2002 à 22:55:34    

merci pour le prog hermes je vais tester !
 
Pour ce qui est du javascript, si je te suis je peux mettre mon site que j'essaye de dévolloper à la poubelle !
 
En faite cest vrai que des fois je me casse les burnes pour rien à vouloir faire un site en js/html alors que en flash ca serais 1000X plus simple ...
 
Honnetement que pensez vous de ca: www.magnin-sante.ch/dhtml
 

Reply

Marsh Posté le 08-12-2002 à 22:55:34   

Reply

Marsh Posté le 08-12-2002 à 22:57:22    

The Kinetics a écrit :


Honnetement que pensez vous de ca: www.magnin-sante.ch/dhtml


que tu peux effectivement le mettre a la poubelle... ca fait une jolie page blanche (oui, j'ai javascript activé, non, je n'ai pas ie)

Reply

Marsh Posté le 08-12-2002 à 23:01:44    

:sweat: Heuuu tu a activé les Pop-up ?
Tu utilise quoi comme navigateur ?
 

Reply

Marsh Posté le 09-12-2002 à 11:40:42    

Voici d'autres fonctions utiles en JS
 
Pour ceux qui veulent désactiver le bouton droit de la souris sur leur formulaire
 

Code :
  1. /* --------------------------------------------------------------- */
  2. /* Désactiver le bouton droit de la souris                         */
  3. /* --------------------------------------------------------------- */
  4. var message = "Vous n'êtes pas autorisé à utiliser le bouton droit de la souris.";
  5. var ns4 = (document.layers) ? true : false;
  6. var ie4 = (document.all) ? true : false;
  7. var dom = (document.getElementById) ? true : false;
  8. if (dom) {
  9. if (document.addEventListener) {
  10.  document.addEventListener("mouseup", RightMouseDisable, false);
  11. } else {
  12.  document.oncontextmenu = IsForbidden;
  13. }
  14. } else if (ie4) {
  15. document.onkeydown = CheckKey;
  16. document.onmousedown = RightMouseDisable;
  17. } else if (ns4) {
  18. document.captureEvents(Event.MOUSEDOWN);
  19. document.onmousedown = RightMouseDisable;
  20. }
  21. function CheckKey() {
  22. var MyKey = event.keyCode;
  23. if (MyKey==93) {
  24.  var MyValue = IsForbidden;
  25.  return false;
  26. }
  27. }
  28. function RightMouseDisable(e) {
  29. var MyNumber=0;
  30. if (ie4) {
  31.  MyNumber = event.button;
  32. } else {
  33.  MyNumber = e.which;
  34.  if (MyNumber == 2 || MyNumber == 3) {
  35.   var MyValue = IsForbidden();
  36.   return false;
  37.  } else {
  38.   return true;
  39.  }
  40. }
  41. }
  42. function IsForbidden() {
  43. alert(message);
  44. return false;
  45. }


 
Autres fonctions sur les chaînes de caractères
 

Code :
  1. /* --------------------------------------------------------------- */
  2. /* Vérifie la numéricité d'une chaîne                              */
  3. /* --------------------------------------------------------------- */
  4. function isNumeric(pStr) {
  5. return !(pStr.search(/\D/) >= 0);
  6. }
  7. /* --------------------------------------------------------------- */
  8. /* Change la première lettre d'une chaîne en majuscule             */
  9. /* Exemple: DERTY => Derty                                         */
  10. /* --------------------------------------------------------------- */
  11. function capitalize(pString) {
  12. return (pString.charAt(0)).toUpperCase() + pString.slice(1).toLowerCase();
  13. }
  14. /* --------------------------------------------------------------- */
  15. /* Supprime les espaces superflus dans la chaîne de caractères en  */
  16. /* paramètre                                                       */
  17. /* --------------------------------------------------------------- */
  18. function trim(inputString) {
  19. if (typeof inputString != "string" ) {
  20.  return inputString;
  21. }
  22. var retValue = inputString;
  23. var ch = retValue.substring(0, 1);
  24. while (ch == " " ) {
  25.  retValue = retValue.substring(1, retValue.length);
  26.  ch = retValue.substring(0, 1);
  27. }
  28. ch = retValue.substring(retValue.length-1, retValue.length);
  29. while (ch == " " ) {
  30.  retValue = retValue.substring(0, retValue.length-1);
  31.  ch = retValue.substring(retValue.length-1, retValue.length);
  32. }
  33. while (retValue.indexOf("  " ) != -1) {
  34.  retValue = retValue.substring(0, retValue.indexOf("  " )) + retValue.substring(retValue.indexOf("  " )+1, retValue.length);
  35. }
  36. return retValue;
  37. }


 
Méthode de manipulation de champ
 

Code :
  1. /* --------------------------------------------------------------- */
  2. /* Réinitialise le champ pElem du document passé en paramètre      */
  3. /* --------------------------------------------------------------- */
  4. function resetField(pElem, doc) {
  5.     var el;
  6. if (doc != null) {
  7.  el = doc.forms[0].elements[pElem];
  8. } else {
  9.  el = window.document.forms[0].elements[pElem];
  10. }
  11.     switch(el.type) {
  12.  case 'hidden' : el.value = ''; break;
  13.  case 'password' : el.value = ''; break;
  14.  case 'text' : el.value = ''; break;
  15.  case 'textarea' : el.value = ''; break;
  16.  case 'select-one' : el.selectedIndex = 0; break;
  17.  case 'checkbox' : case 'radio' : el.checked = false; break;
  18.  default : for(var k=0 ; k<el.length ; k++) { el[k].checked = false; }
  19. }
  20. }


 
Test du navigateur
 

Code :
  1. /* --------------------------------------------------------------- */
  2. /* Teste si le navigateur est Netscape version >= 4.               */
  3. /* --------------------------------------------------------------- */
  4. /* @return true si le navigateur correspond au test                */
  5. /*         false sinon.                                            */
  6. /* --------------------------------------------------------------- */
  7. function isNS4() {
  8.     return (navigator.appName.substring(0,8) == "Netscape" && parseFloat(navigator.appVersion.substring(0,4)) >= 4);
  9. }
  10. /* --------------------------------------------------------------- */
  11. /* Teste si le navigateur est Internet Explorer version >= 5.      */
  12. /* --------------------------------------------------------------- */
  13. /* @return true si le navigateur correspond au test                */
  14. /*         false sinon.                                            */
  15. /* --------------------------------------------------------------- */
  16. function isIE5() {
  17.     return (navigator.appName.substring(0,9) == "Microsoft" && navigator.appVersion.indexOf("MSIE 5" ) != -1);
  18. }


 
Fonctions de travail sur les heures
 

Code :
  1. /* --------------------------------------------------------------- */
  2. /* Vérifie la validité d'une heure au format HH:MM                 */
  3. /* --------------------------------------------------------------- */
  4. function validTime(pTime) {
  5. tabTime = new String(pTime).split(":" );
  6. if (tabTime.length != 2) { return false; }
  7. if (!(isNumeric(tabTime [0]) && isNumeric(tabTime [1]))) { return false; }
  8. HH = eval(tabTime[0]);
  9. MM = eval(tabTime[1]);
  10. if (!((HH >= 0) && (HH <= 23))) { return false; }
  11. if (!((MM >= 0) && (MM <= 59))) { return false; }
  12. return true;
  13. }
  14. /* --------------------------------------------------------------- */
  15. /* Retourne une heure HH:MM sous la forme d'une durée en minutes   */
  16. /* --------------------------------------------------------------- */
  17. function HHMMToDuree(paramDuree) {
  18. if (!validTime(paramDuree)) { return -1; }
  19. tabTime = new String(paramDuree).split(":" );
  20. return eval(eval(tabTime[0])*60 + eval(tabTime[1]));
  21. }
  22. /* --------------------------------------------------------------- */
  23. /* Retourne une durée en minutes sous la forme HH:MM               */
  24. /* --------------------------------------------------------------- */
  25. function DureeToHHMM(paramDuree) {
  26. MM = eval(paramDuree) % 60;
  27. HH = (eval(paramDuree) - MM) / 60;
  28. return padNumber(HH, 2) + ":" + padNumber(MM, 2);
  29. }
  30. /* --------------------------------------------------------------- */
  31. /* Retourne l'heure courante en nombre de minutes depuis minuit    */
  32. /* --------------------------------------------------------------- */
  33. function getTime() {
  34. dat = new Date();
  35. return eval(dat.getHours() * 60 + dat.getMinutes());
  36. }


 
Si vous avez des choses à partager, n'hésitez pas
 
 :hello:

Reply

Marsh Posté le 09-12-2002 à 11:41:43    

The Kinetics a écrit :

:sweat: Heuuu tu a activé les Pop-up ?
Tu utilise quoi comme navigateur ?


ah oui, j'ai viré les popups sur les onload.
mozilla

Reply

Sujets relatifs:

Leave a Replay

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