Partage
  • Partager sur Facebook
  • Partager sur Twitter

Dérive script chronomètre

    16 novembre 2017 à 22:19:03

    Bonjour,

    cherchant un script de chronomètre pour une appli qui demande une précision de l'ordre d'1/2 seconde, je me trouve devant un problème de temps.
    Le même script sous firefox me donne un écart de 4/10eme sur 5min, alors que sous chrome et un autre pc, ca peut aller jusqu'à 12s de retard sur 1 minute.

    le script est basic, avec un start, pause, reset en utilisant  setTimeout("chronometer()", 100);
    suivant l'ordi qui lance le script et le navigateur, je suis obligé de modifier 100 par 99 voir 95 pour une différence moins grande.

    En quoi cela peut il jouer pour avoir un écart entre pc?

    En C++, je gère facilement le code avec millis().

    Y aurait il une fonction qui suivant le pc et le navigateur, afin d'avoir le bon timing?

    Merci d'avance

    Code utilisé repompé avec amour sur le net.....

    var stmints = 0;
    var stseconds = 0;
    var stzecsec = 0;
    var sthours = 0;
    
    var zecsec = 0;
    var seconds = 0;
    var mints = 0;
    var hours = 0;
    
    var startchron = 0;
    
    
    function chronometer() {
      if(startchron == 1) {
        zecsec += 1;       
    
        // set seconds
        if(zecsec > 9) {
          zecsec = 0;
          seconds += 1;
    
        }
    
      
        // set minutes
        if(seconds > 59) {
          seconds = 0;
          mints += 1;
        }
    
        // set hours
        if(mints > 59) {
          mints = 0;
          hours += 1;
        }
    
    
        // adds data in #showtm
        document.getElementById('showtm').innerHTML = hours+ ' : '+mints+ ' : '+ seconds+ ':'+ zecsec;
      //document.getElementById('showtm').innerHTML = compZero(hours)+ ' H ' +compZero(mints)+ ' Min '+ compZero(seconds)+ ' Sec '+ zecsec;
    
        // if the chronometer reaches to the values for stop, calls whenChrStop(), else, auto-calls chronometer()
        if(zecsec == stzecsec && seconds == stseconds && mints == stmints && hours == sthours) toAutoStop();
        else setTimeout("chronometer()", 100);
      }
    }
    
    function startChr() { startchron = 1; chronometer(); }      // starts the chronometer
    function stopChr() { startchron = 0; }                      // stops the chronometer
    function resetChr() {
      zecsec = 0;  seconds = 0; mints = 0; startchron = 0; 
      //document.getElementById('showtm').innerHTML = mints+ ' : '+ seconds+ '<sub>'+ zecsec+ '</sub>';
      document.getElementById('showtm').innerHTML = hours+ ' H ' +mints+ ' Mn '+ seconds+ ' Sec '+ zecsec;
    }
    
    
    startChr();
    $('#showtm').load(document.URL +  ' #showtm');



    • Partager sur Facebook
    • Partager sur Twitter
      17 novembre 2017 à 0:06:30

      Salut, tu ne peux pas compter sur setTimeout ni sur setinterval.

      Tu dois utiliser l'objet Date et comparer la date actuelle avec la date de départ

      • Partager sur Facebook
      • Partager sur Twitter
        17 novembre 2017 à 9:39:22

        merci, je vais me plonger sur la fonction new.date()
        • Partager sur Facebook
        • Partager sur Twitter
          17 novembre 2017 à 14:46:01

          ça marche, hésite pas à revenir si tu rencontre des difficultés 

          • Partager sur Facebook
          • Partager sur Twitter
            21 novembre 2017 à 11:38:49

            bonjour,

            nickel, ca fonctionne parfaitement.
            Merci beaucop du coup de main ;)

            • Partager sur Facebook
            • Partager sur Twitter

            Dérive script chronomètre

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown