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 :

Script interrompu après « refresh »


Sujet :

JavaScript

  1. #1
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut Script interrompu après « refresh »
    Bonsoir !

    je suis en train de faire ce qu'on pourrait appeler un diaporama de site web. L'objectif est de changer de page automatiquement pour simuler une visite du site (sur un ordinateur de démonstration, sans clavier ni souris par exemple).

    Histoire d'afficher un message constant en haut de page, j'ai utilisé des frames (c'est mal, mais c'est de la page « unitaire » qui ne sert qu'à moi) :
    • pagemanager, qui contient le script, charge les pages et affiche un court texte de présentation (indépendant de la page affichée) ;
    • sitedisplay dans laquelle les pages sont chargées.
    J'ai défini ces fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function mytimer() {
      alert('on rentre');
      comp = (setTimeout("loadRandomPage()",30000));
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function loadRandomPage() {
      alert('on declenche');
      var urls = new Array();
      urls = ["http://www.google.fr",
              "http://www.kernel.org",
              "http://www.debian.org"
             ];
      var nbsites = urls.length;
     
      top.frames['sitedisplay'].location = urls[getRamdomNumber(nbsites)];
      top.frames['sitedisplay'].location.refresh();
      alert('fini');
    }
    Le tout est initialisé sur la page de pagemanager par un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="mytimer()">
    Le premier chargement se passe bien, une page s'affiche, je peux voir passer les messages « on rentre » et « on declenche », mais jamais « fini ». Et du coup, je n'ai jamais non plus le chargement de la page suivante...

    J'ai également essayé ceci, mais ce n'est pas mieux (même résultat) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function mytimer() {
      alert('on rentre');
      loadRandomPage()
      comp = (setTimeout("mytimer()",30000));
    }
    Merci pour votre aide !

    Alban

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    le rechargement d'une page implique forcément l'arret du script puisque la page porteuse du script n'existe plus ...

    il va falloir soit passer par un iframe, du coup le script sera sur la page mère et ne sera pas detruit lors d'un changement de page dans l'iframe
    soit utiliser ajax pour faire des modifications sur la page à partir d'éléments sur le serveur sasn recharger la page
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Ben c'est justement pour ça que j'ai utilisé des frames : le script est dans la frame pagemanager, qui n'est jamais rechargée et qui charge les pages dans la frame sitedisplay.
    Et c'est justement pour ça que ça me perturbe...

  4. #4
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Est tu sur que lors du changement de source de la frame tu as besoin de faire un refresh ?
    À mon avis ce n'est pas nécessaire.

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Effectivement, pas nécessaire. Et même mieux : sans le refresh, ça fonctionne !

    Merci !

    Par contre (histoire que la solution complète soit donnée d'un bloc), c'est ma 2e proposition qu'il fallait utiliser (le timeout rappelle la fonction de timer qui lance le traitement) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function mytimer() {
      loadRandomPage()
      comp = (setTimeout("mytimer()",30000));
    }

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

Discussions similaires

  1. Poursuivre un script shell après un su
    Par patou21 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 26/08/2008, 14h41
  2. perte du $_POST[] après refresh pour test cookie
    Par exeral dans le forum Langage
    Réponses: 3
    Dernier message: 14/05/2008, 20h39
  3. [Sécurité] Script exécuté après paiement
    Par frol dans le forum Langage
    Réponses: 6
    Dernier message: 12/05/2006, 20h28
  4. Enregistrement courant après refresh [cas particulier]
    Par say dans le forum Bases de données
    Réponses: 8
    Dernier message: 02/08/2005, 15h59
  5. [D6][DataSet]repositionnement après refresh
    Par prolice dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/04/2005, 09h34

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