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 :

Rediriger vers une page après un compte à rebours


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Homme Profil pro
    directeur hypermarché
    Inscrit en
    Avril 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : directeur hypermarché

    Informations forums :
    Inscription : Avril 2009
    Messages : 227
    Par défaut Rediriger vers une page après un compte à rebours
    Bonjour à tous,

    J'ai ce petit script dans e <head> qui me permet de réaliser un compte à rebours de 10 secondes puis de rediriger.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    window.setTimeout("document.form.time.value='10'",1000) 
    window.setTimeout("document.form.time.value='9'",2000) 
    window.setTimeout("document.form.time.value='8'",3000) 
    window.setTimeout("document.form.time.value='7'",4000) 
    window.setTimeout("document.form.time.value='6'",5000) 
    window.setTimeout("document.form.time.value='5'",6000) 
    window.setTimeout("document.form.time.value='4'",7000) 
    window.setTimeout("document.form.time.value='3'",8000) 
    window.setTimeout("document.form.time.value='2'",9000) 
    window.setTimeout("document.form.time.value='1'",10000) 
    window.setTimeout("document.form.time.value='0';location=('http://www.XXX.fr/Templates/msolo5.php');",11000)
    Cependant, je voudrais rediriger vers http://www.XXX.fr/Templates/msolo5.php?id_alea=='.$_GET['id_alea'] et là

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    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 094
    Par défaut
    WAW ! Si tu veux un compte à rebours de 30 secondes, tu écris 30 lignes de code ?

    Déjà, l'attribut language n'existe plus. C'est :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript">

    Ensuite, pourquoi pas un setInterval ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var decompte = 30;
    var timer = setInterval(function( ){
       decompte--;
       document.form.time.value = decompte;
       if (decompte === 0) {
          clearInterval(timer);
          location = "http://www.XXX.fr/Templates/msolo5.php";
       }
    }, 1000);
    Enfin, tu ne peux pas utiliser une variable PHP dans du code JavaScript.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.XXX.fr/Templates/msolo5.php?id_alea=='.$_GET['id_alea']
    Cela dit, JavaScript peut accéder aux variables GET grâce à location.search.
    Pour le reste, je ne comprends pas ce que tu cherches à faire avec ce double égal (==).
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre éclairé
    Homme Profil pro
    directeur hypermarché
    Inscrit en
    Avril 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : directeur hypermarché

    Informations forums :
    Inscription : Avril 2009
    Messages : 227
    Par défaut
    Merci pour cette réponse précise.

    Effectivement , le == est une erreur de copier-coller

    Je ne veux pas utiliser une variable php avec du javascript, je veux diriger vers une page php après le décompte .
    Mais j'ai la variable $_GET['id_alea'] à transmettre.

    Comment faire avec location.search ?

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Par défaut
    Bonjour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     document.location.href="http://www.et caetera...";
    et si vous avez des paramètres à passer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     document.location.href="http://www.et caetera......" + "?id_alea=" + parametre ;
    Vous devrez bien entendu, 'construire' la variable parametre, mais cela je vous laisse faire.
    Cdlt

    PS : Watilin vous a fort justement suggéré, que votre comte à rebours n'était pas "top"...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Il y a aussi la possibilité d'utiliser la balise refresh

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Refresh" content="30; URL=http://www.XXX.fr/Templates/msolo5.php?...">
    Dernière modification par Bovino ; 06/06/2014 à 10h42. Motif: Merci d'indiquer le langage utilisé ([code=xxx]) pour activer la coloration syntaxique !

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par HAbroc
    Comment faire avec location.search ?
    Comme indiqué dans la par exemple...
    Comment récupérer les paramètres passés dans une URL ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    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 094
    Par défaut
    Citation Envoyé par chanyslas Voir le message
    Il y a aussi la possibilité d'utiliser la balise refresh
    Je réprouve l'usage des meta refresh, et je vais tenter d'expliquer pourquoi.

    D'abord (argument d'autorité ), le W3C déconseille leur usage en expliquant qu'elles peuvent désorienter l'utilisateur.

    Ensuite, depuis la publication de cette note du W3C (novembre 2000), les navigateurs sont devenus de plus en plus sensibles aux redirections automatiques et proposent divers mécanismes pour les contrôler et les empêcher. Par exemple sous Firefox, il y a l'option « Prévenir lorsque des sites web tentent de rediriger ou de recharger la page ». Si l'option est activée, lorsqu'un site tente une redirection, un bandeau apparaît en haut de la fenêtre et l'utilisateur peut choisir d'autoriser ou non la redirection. Par conséquent, développer un mécanisme de redirection en se basant sur cette technique n'est plus fiable à l'heure actuelle.

    Les meta refresh sont indiquées dans le cas où le JavaScript n'est pas disponible/activé sur le logiciel client. Dans le cas présent, nous contrôlons un compte à rebours par JavaScript et redirigeons par JavaScript, c'est cohérent. La meta refresh ne peut pas contrôler le compte à rebours. Si la page mélange un décompte visuel contrôlé par JavaScript et une meta refresh, un utilisateur qui n'a pas JavaScript ne verra pas de décompte, ou verra un décompte qui ne diminue pas, et pensera qu'il n'y aura pas de redirection.

    D'autre part, la meta refresh fonctionne comme location.replace : la page actuelle est supprimée de l'historique de session (les boutons « précédent » et « suivant »), encore une source de confusion pour l'utilisateur.

    Il faut aussi se rappeler que la meta est une http-equiv, c'est-à-dire, comme son nom l'indique, un équivalent HTML à un entête HTTP. Si c'est possible, il vaut mieux configurer le serveur pour envoyer directement l'entête Refresh, ce qui a plusieurs avantages :
    • c'est faisable sur tous types de fichiers, pas seulement HTML
    • on peut ajouter d'autres entêtes pour ajouter de informations (par exemple un code 301 ou 302 pour indiquer que la redirection est permanente ou temporaire)
    • Le serveur a la possibilité de n'envoyer que les entêtes, économisant ainsi du trafic réseau (alors que la meta se trouve dans le corps HTTP)
    • etc.


    Les redirections JavaScript ne sont pas supervisées par le navigateur (d'ailleurs je me demande pourquoi ), donc il est plus cohérent de concevoir son site avec cette technique. Et s'il y a un réel besoin de cibler les clients sans JavaScript, on peut placer une meta refresh dans une balise <noscript>.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  8. #8
    Membre éclairé
    Homme Profil pro
    directeur hypermarché
    Inscrit en
    Avril 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : directeur hypermarché

    Informations forums :
    Inscription : Avril 2009
    Messages : 227
    Par défaut
    Citation Envoyé par iakou Voir le message
    Bonjour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     document.location.href="http://www.et caetera...";
    et si vous avez des paramètres à passer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     document.location.href="http://www.et caetera......" + "?id_alea=" + parametre ;
    Vous devrez bien entendu, 'construire' la variable parametre, mais cela je vous laisse faire.
    Cdlt

    PS : Watilin vous a fort justement suggéré, que votre comte à rebours n'était pas "top"...
    Je viens d'essayer, mais je ne parviens pas à passer la variable.

    ça me donne : http://www.XXX.fr/Templates/msolo5.php?id_alea=$_GET['id_alea']

    là où je souhaiterais avoir par exemple : http://www.XXX.fr/Templates/msolo5.php?id_alea=16 si $_GET['id_alea']=16

  9. #9
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Par défaut
    Bonsoir.
    Oui nous avons bien vu que vous ne maitrisiez pas JS.
    C'est une simple manipulation de la chaine "query-string" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var chaine = window.location.search ;
    Ensuite il faut faire un petit travail pour récupérer la valeur du paramètre id_alea : 3 ou 4 lignes de JS que vous aurez à coeur de découvrir...
    Cdlt

  10. #10
    Membre éclairé
    Homme Profil pro
    directeur hypermarché
    Inscrit en
    Avril 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : directeur hypermarché

    Informations forums :
    Inscription : Avril 2009
    Messages : 227
    Par défaut
    Entendu. Merci à vous tous.

    Il y a une possibilité pour empêcher la reprise du compteur en cas d'actualisation de la page ?

  11. #11
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Par défaut
    Peut-être avec onbeforeunload ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script language="JavaScript">
    function confirmExit()
         {
         return "Êtes-vous sûr de vouloir quitter ?" ;
         }
    window.onbeforeunload = confirmExit;
    </script>
    A tester... (cette méthode peut convenir en prévention des erreurs de manipulation ou confirmation de lien)

  12. #12
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Tu peux par exemple sauvegarder l'état actuel du décompte dans un cookie, et utiliser cet état, s'il existe, pour initaliser le décompte.

    Mais s'il faut résister aussi à l'effacement de cookies, il va falloir nous en dire un peu plus sur ce que tu fais.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    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 094
    Par défaut
    Citation Envoyé par HAbroc Voir le message
    Il y a une possibilité pour empêcher la reprise du compteur en cas d'actualisation de la page ?
    Tu veux dire, empêcher que le compteur remonte à 10 ? Oui c'est possible, il faut simplement utiliser un moyen de stockage d'information qui survive d'une page à l'autre (car quand j'actualise la page, du point de vue de JavaScript, ce n'est plus la même page). Tu peux utiliser un paramètre GET, un cookie comme le suggère Thelvin, ou encore le localStorage.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  14. #14
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Par défaut
    Huuumm... Cookie !...

Discussions similaires

  1. Impossible de rediriger vers une page après un délai
    Par Gouyon dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/11/2008, 09h24
  2. Rediriger vers une page après sélection dans un select
    Par belzeluc dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 07/11/2006, 22h32
  3. Réponses: 8
    Dernier message: 24/07/2006, 12h26
  4. Réponses: 13
    Dernier message: 25/05/2006, 04h13
  5. [PHP-JS] PHP qui redirige vers une page
    Par jeanfrancois dans le forum Langage
    Réponses: 3
    Dernier message: 09/05/2006, 11h52

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