IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Compte à rebours sur refresh sur page HTML


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut Compte à rebours sur refresh sur page HTML
    Bonjour,

    J'aimerais afficher un compte à rebours sur ma page WEB, qui correspond à mes script de refresh... voici les codes utilisés. Ils fonctionnent le problème n'est pas là... :-)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script type="text/javascript">
    window.onload=function() {
      window.setInterval(function() {
        window.frames.Example2.location.reload()
      },1000*120)
    }
    </script>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <script type="text/javascript">
    window.onload = function() {
      var URLs = [
        "fiche1.htm",
        "fiche2.htm",
        "fiche3.htm"
      ];
      var URLsLen = URLs.length;
      var ii = 0;
      var iframe2 = document.getElementById('Example2');
      iframe2.src = URLs[0]; //
      window.setInterval(function() {
        ii++;
        iframe2.src = URLs[ii % URLsLen]; // (% : modulo)
     // }, 1000 * 60 * 2); // toutes les 2 minutes
     }, 1000 * 15); // toutes les 3 s (EN TEST !)
    };
    </script>
    Merci d'avance pour votre aide :-)

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    la solution est donnée dans cette discussion récente.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut
    Bonjour,

    Le code suivant fonctionne, mais je n'arrive pas à la "fusionner" avec mes deux codes à moi...

    Code qui fonctionne...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    "use strict";
    function launch_count_down()
    {
      // ici : le rechargement
      let reload_delay = 1000 * 60 * 30; // toutes les 30 minutes
      setTimeout("document.location.href='Essai.php?bascule=0'", reload_delay);
     
      // Compte à rebours
      let count_down_div = document.getElementById("count_down_div");
      let count_down_delay = 1000 * 1; // toutes les 1 secondes
      let count_down = 0;
      count_down_div.textContent = 'Rechargement dans ' + heures_minutes_secondes( (reload_delay - count_down)/1000 );
      window.setInterval(function() {
        count_down += count_down_delay;
        count_down_div.textContent = 'Rechargement dans ' + heures_minutes_secondes( (reload_delay - count_down)/1000 );
        if (count_down >= reload_delay) { count_down = 0; }
      }, count_down_delay);
    }
     
    function heures_minutes_secondes( secondes )
    {
        let temps = new Date();
        temps.setTime(secondes*1000);
      if( secondes > 60 * 60) // supérieur à 1 heure
      {
        return (temps.getHours()-1)+":"+temps.getMinutes()+":"+temps.getSeconds();
      } else {
        return temps.getMinutes()+":"+temps.getSeconds();
      }
    }
     
    //window.onload = launch_count_down;
    document.addEventListener('DOMContentLoaded', function(event) {
      launch_count_down();
    });
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="count_down_div"></div>
    Mes deux codes...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script type="text/javascript">
    window.onload=function() {
      window.setInterval(function() {
        window.frames.Example2.location.reload()
      },1000*120)
    }
    </script>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <script type="text/javascript">
    window.onload = function() {
      var URLs = [
        "fiche1.htm",
        "fiche2.htm",
        "fiche3.htm"
      ];
      var URLsLen = URLs.length;
      var ii = 0;
      var iframe2 = document.getElementById('Example2');
      iframe2.src = URLs[0]; //
      window.setInterval(function() {
        ii++;
        iframe2.src = URLs[ii % URLsLen]; // (% : modulo)
     // }, 1000 * 60 * 2); // toutes les 2 minutes
     }, 1000 * 15); // toutes les 15 s (EN TEST !)
    };
    </script>

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour,
    si tu écrits deux affectations, window.onload=function() {, la dernière affectation REMPLACE les précédentes affectations.

    Une solution consiste à mettre TOUS tes appels dans le window.onload.

    Un autre consiste à utiliser addEventListener, en groupant ou non tous tes apples/fonctions.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut
    Bonjour,

    Merci pour les informations, mais n'étant pas "du tout" un pro en JavaScript, je sèche un max...

    Serait-ce abuser de vous demander un exemple avec par exemple mon premier code, voir les deux... ?

    Ps : Cette page sera affichée sur une TV, et juste pour info, ma TV n'accepte pas les LET, elle veut obligatoirement des VAR pour déclarer les variables...

    Merci d'avance

  6. #6
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 098
    Par défaut
    Moi ce qui me surprend c’est que tu as d’un côté un script qui rafraîchit l’iframe, et de l’autre côté un script qui change l’URL de la même iframe. Faire les deux à la fois, c’est inefficace car ça crée du trafic inutile.

    Pourrais-tu nous expliquer, en langage courant, ce que tes scripts de refresh sont censés faire ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut
    Bonjour,

    Les deux script sont effectivement très différents, le premier fait un 'simple' refresh d'une iFrame , l'autre change le contenu d'un iFrame ... pourquoi...

    J'ai créé en Excel un fichier ou je rentre les résultats des matchs de tennis du week-end de mon club, lorsque je sauve cette page, elle créé des fichiers HTML et les envoies en FTP sur le WEB, le premier reprend la totalité des matchs du week-end et l'affiche sur une SMART TV, et un refresh est fait toutes les 2 minutes pour actualiser la page.

    le problème est qu'il y a beaucoup d'informations sur cette page, donc pas très lisible sur certaine TV... C'est là que le 2ème script intervient... mon fichier Excel créé aussi plusieurs pages reprenant sur chacune d'elles 5 matchs... et le script affiche ces pages...

    voila pourquoi les deux fichiers sont différents. Mais ils ont une chose en commun, il y a une temporisation, soit pour faire un refresh, soit pour charger la page avec un URL différent... et c'est cette temporisation que j'aimerais afficher...

    Pourquoi des iFrame, parce que mes pages contiennent un iFrame avec un "titre" et un autre iFrame avec la ou les pages à afficher... et comme il y a des 'refresh' assez souvent, j'ai allégé le truc en ne chargeant le titre qu'une fois...

    J'aimerais donc pouvoir afficher le temps restant avant 'refresh' ou changement de page sur l'iFrame 'titre' ou l'autre...

    Voili voilo

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- On en avait parlé dans une discussion précédente.
    Et son utilisation sur une télévision.

    Citation Envoyé par Crachover Voir le message
    ...Les deux script sont effectivement très différents, le premier fait un 'simple' refresh d'une iFrame , l'autre change le contenu d'un iFrame ...
    2- NON.
    1. ils font à peu près la MEME CHOSE (recharger/charger une iframe)
    2. il s'agit de LA MEME iframe !

    3- Le 2ème script est censé remplacer le 1er ! Pas venir s'ajouter...
    D'ailleurs, comme l'a remarqué NoSmoking, seul le 2ème est exécuté !
    Tu peux supprimer le 1er.

    Au fait : tu as remarqué que tu changeais de page toutes les 15 secondes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     // }, 1000 * 60 * 2); // toutes les 2 minutes
     }, 1000 * 15); // toutes les 15 s (EN TEST !)

    4- Concernant le compte à rebours :
    Où vas-tu mettre le code d'affichage : <div id="count_down_div"></div> ?
    Dernière modification par Invité ; 08/08/2018 à 09h35.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Voilà ton code :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    // ------------------------
    window.onload = function() {
      var URLs = [
        "fiche1.htm",
        "fiche2.htm",
        "fiche3.htm"
      ];
      var URLsLen = URLs.length;
      var ii = 0;
      var iframe2 = document.getElementById("Example2");
     
      var reload_delay = 1000 * 60 * 2; // toutes les 2 minutes
      iframe2.src = URLs[0];
     
      launch_count_down(reload_delay); // lance le compte à rebours
     
      window.setInterval(function() {
        ii++;
        iframe2.src = URLs[ii % URLsLen]; // (% : modulo)
      }, reload_delay);
    };
     
    // ------------------------
    function launch_count_down(count_down_delay) {
      // Compte à rebours
      var count_down_div = document.getElementById("count_down_div");
      var count_down = 0;
      var count_delay = 1000; // a chaque seconde
      count_down_div.textContent = "Rechargement dans " + heures_minutes_secondes((count_down_delay) / 1000);
      window.setInterval(function() {
        count_down += count_delay;
        count_down_div.textContent = "Rechargement dans " + heures_minutes_secondes((count_down_delay - count_down) / 1000);
        if( count_down == count_down_delay ){
          count_down = 0; // on réinitalise
        }
      }, count_delay);
    }
     
    // ------------------------
    function heures_minutes_secondes(secondes) {
      var temps = new Date();
      temps.setTime(secondes * 1000);
      if (secondes > 60 * 60) {
        // supérieur à 1 heure
        return (
          temps.getHours() - 1 + ":" + temps.getMinutes() + ":" + temps.getSeconds()
        );
      } else {
        return temps.getMinutes() + ":" + temps.getSeconds();
      }
    }

    Cela dit : 15 secondes, c'est largement suffisant pour lire une page !
    Et les 3 pages sont affichées en moins d'une minute...
    Dernière modification par Invité ; 08/08/2018 à 15h41.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut
    Tout fonctionne super

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PPT-2013] Créer un compte à rebours visibles sur une diapositive.
    Par Invité dans le forum VBA PowerPoint
    Réponses: 11
    Dernier message: 10/01/2015, 22h24
  2. [XL-2007] comptes a rebours sur un Userform
    Par dodo69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/07/2011, 09h15
  3. [PHP-JS] Compte à rebours sur l'ensemble des pages
    Par hash95 dans le forum Langage
    Réponses: 7
    Dernier message: 14/06/2006, 15h14
  4. compte utilisateur sur windows
    Par aymane_farissi dans le forum ASP
    Réponses: 1
    Dernier message: 23/09/2005, 20h04
  5. Compte à rebours trop rapide
    Par Anduriel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2005, 20h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo