Catégories
Javascript

Attendre le chargement d’un autre frame

Petit problème technique qui revient régulièrement. Ce problème n’est pas toujours facile à détecter, car il peut être aléatoire (non reproductible de façon systématique).

Description du problème : j’ai une page HTML comportant 2 ou plusieurs frames. Une fonction javascript sur l’un des frames doit faire appel à un élément de la deuxième frame. Si le temps de chargement de la deuxième frame est assez long et qu’elle n’est donc pas chargée, il est possible que la fonction ne trouve pas l’élément recherché. Il faut donc attendre le chargement de cette deuxième frame.

Pour cela, la solution consiste à faire une boucle utilisant la fonction setTimeout (pour ne pas monopoliser le CPU avec une boucle d’attente).

Voici la façon dont je l’implémente :


var cpt;
function funcky() {
  clearTimeout(funcky);
  // la 2ème frame s'appelle fra2
  if(!top.fra2.document) {
    if (cpt) {
      if (cpt++ > 20) {
        alert("Chargement de la page trop long...");
        return;
      }
    } else cpt=1;
    setTimeout(funcky,200);
    return;
  }
  // ...
  // Ecrire mon code ici
  // ...
}

Catégories
Javascript

Formattage des téléphones français

Comment formater un numéro de téléphone français en javascript?

function format_tel(val)
{
  // La variable qui stockera la chaine modifiée
  var resultat = '';
  // Un tableau intermédiaire pour découper les paquets
  var tableau = new Array();
  var nb=2
  // Pour chaque caractère saisi
  for ( i = 0; i <= val.length; i++ ) {
    // On place le nombre de caractère demandés dans un tableau
    tableau[i] = val.substr(i,nb);
    // Suivant le nombre de caractères demandés par paquet, on fait avancer le pointeur
    for ( j = 1; j < nb; j++ ) {
      i++
    }
  }
  // Pour chaque élément du tableau renseigné précédemment
  for ( i = 0; i < tableau.length; i++ ) {    // Si la valeur est renseignée
    if ( tableau[i] != undefined ) {      // On l'affecte à la variable résultat et on place le séparateur
      resultat += tableau[i] + ' ';
    }
  }
 
  return resultat.replace(/ *$/,'');
}

Catégories
Javascript

Vérification de SIRET

Cette fonction permet de vérifier la validité d’un SIRET.
  /**
   * @name EstSiretValide
   *
   * @param   Le code SIRET dont on veut vérifier la validité.
   *
   * @return   Un booléen qui vaut 'true' si le code SIRET passé en
   *                           paramètre est valide, false sinon.
   */
  function EstSiretValide(siret) {
    var estValide;
    if ( (siret.length != 14) || (isNaN(siret)) )
      estValide = false;
    else {
       // Donc le SIRET est un numérique à 14 chiffres
       // Les 9 premiers chiffres sont ceux du SIREN (ou RCS), les 4 suivants
       // correspondent au numéro d'établissement
       // et enfin le dernier chiffre est une clef de LUHN.
      var somme = 0;
      var tmp;
      for (var cpt = 0; cpt         if ((cpt % 2) == 0) { // Les positions impaires : 1er, 3è, 5è, etc...
          tmp = siret.charAt(cpt) * 2; // On le multiplie par 2
          if (tmp > 9)
            tmp -= 9;  // Si le résultat est supérieur à 9, on lui soustrait 9
        }
       else
         tmp = siret.charAt(cpt);
         somme += parseInt(tmp);
      }
      if ((somme % 10) == 0)
        estValide = true; // Si la somme est un multiple de 10 alors le SIRET est valide
      else
        estValide = false;
    }
    return estValide;
  }
 
 

Catégories
Javascript

Vérification de SIREN

Cette fonction permet de vérifier la validité d’un SIREN

   /**
   * @name EstSirenValide
   *
   * @param   Le code SIREN dont on veut vérifier la validité.
   *
   * @return   Un booléen qui vaut 'true' si le code SIREN passé en
   *                           paramètre est valide, false sinon.
   */
  function EstSirenValide(siren) {
 
    var estValide;
    if ( (siren.length != 9) || (isNaN(siren)) )
      estValide = false;
    else {
      // Donc le SIREN est un numérique à 9 chiffres
      var somme = 0;
      var tmp;
      for (var cpt = 0; cpt         if ((cpt % 2) == 1) { // Les positions paires : 2ème, 4ème, 6ème et 8ème chiffre
          tmp = siren.charAt(cpt) * 2; // On le multiplie par 2
          if (tmp > 9)
            tmp -= 9;  // Si le résultat est supérieur à 9, on lui soustrait 9
        }
        else
          tmp = siren.charAt(cpt);
        somme += parseInt(tmp);
      }
      if ((somme % 10) == 0)
        estValide = true;  // Si la somme est un multiple de 10 alors le SIREN est valide
      else
        estValide = false;
    }
    return estValide;
  }