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 :

Redirection automatique après inactivité


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 25
    Points : 19
    Points
    19
    Par défaut Redirection automatique après inactivité
    Bonjour à tous,

    je rencontre actuellement un souci sur ma redirection de page pour inactivité. En effet, j'aimerais qu'une redirection soit effectuée vers mon index.html lorsque l'utilisateur reste inactif après 1 minute environ mais mon souci c'est que la redirection se fait automatiquement si je bouge mon curseur dans le corps de la page mais lorsque je bouge mon curseur que dans l'iframe, le script ne fonctionne pas.

    Pouvez vous m'aider svp.

    Voici le code de mon iframe (scripts compris)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <iframe name="iframe_nav" src="map.html" width="1280" height="750" frameborder="0" scrolling="yes"></iframe>
    et mon 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
      <script type="text/javascript">
    var chrono;
    function startTimer()
    {
    	// le second paramètre de la fonction setTimeout() est en millisecondes
    	// 3min = 3*60*10 ms
    	// la fonction redirection() sera exécutée dans 3 min
    	// on récupère l'identifiant du timer dans chrono
    	chrono = setTimeout("redirection()",2400);	
     
    }	
    // remise à 0 du timer avec pour identifiiant le contenu de chrono, s'il y a eu un mouvement dans la page 
    // [évenement onmousemove()]
    // puis redémarrage du timer en appelant la fonction startTimer()
    function resetTimer()
    {
    	clearTimeout(chrono);
    	startTimer();
    }
     
    // fonction appelée après 3 minutes d'inactivité de la souris (pas de mouvement dans la page)
    function redirection()
    {
    	// redirection vers le site www.developpez.net
    	document.location.href = "http://www.google.fr";	
    }
     
     
    </script>
    la suite (à la fin de l'html)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     <script type="text/javascript">
    	  document.onmousemove = function(){
      clearTimeout(chrono);
      startTimer();
    }
    startTimer();
    </script>

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

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Bonjour,

    réflexion presque idéologique : c'est un choix biaisé que de prendre Google comme « emplacement par défaut ». Tout le monde n'a pas Google en page d'accueil. Le mieux serait de rediriger le visiteur vers about:home mais je ne suis pas sûr que tous les navigateurs le permettent. Rediriger vers la page d'accueil de ton site me paraît déjà une meilleure idée.

    Une erreur d'unité dans ton code :
    10 ms = 1 centième de seconde. Le calcul correct est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    // 3min = 3*60*1000 ms = 240000
    En l'état, ton script redirige au bout de 2.4 secondes.

    Autre chose, c'est déconseillé de passer une chaîne à setTimeout. Ça appelle eval en interne, ce qui amène à des erreurs difficiles à déceler (par exemple si tu utilises this dans ta fonction), un obstacle pour le compilateur à la volée (l'instruction ne peut pas être optimisée avant son exécution), et un problème de sécurité bien connu. Passe une référence directe à ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setTimeout(redirection, 240000);
    Ou bien une fonction anonyme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    setTimeout(function() {
       redirection();
    }, 240000);
    Maintenant je rentre dans le vrai cœur de ton problème : l'iframe et la page autour ont chacune leur propre contexte d'exécution JavaScript, avec leur propre arbre DOM, leurs propres évènements, etc. Un évènement mousemove de l'iframe ne remonte pas dans la fenêtre parente. Dans ton iframe, tu dois appeler la fonction resetTimer de la fenêtre parent en passant par parent ou top :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // code de l'iframe
    document.onmousemove = function() {
       parent.resetTimer();
    };
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Points : 6
    Points
    6
    Par défaut merci
    merci infiniment Watilin . j'ai appris beaucoup de chose te ton post.
    Gratitude

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

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    De rien
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Merci en retard pour ta réponse Watilin, bonne journée

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

Discussions similaires

  1. se deloguer automatiquement apres inactivité
    Par ultraxa dans le forum Windows Serveur
    Réponses: 6
    Dernier message: 06/05/2014, 11h26
  2. [MySQL] Redirection automatique après commande
    Par mikael2235 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 24/06/2010, 08h55
  3. Redirection automatique aprés msg de bienvenue
    Par amminou dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 12/04/2010, 22h43
  4. Redirection automatique après log
    Par rickgoz dans le forum Langage
    Réponses: 10
    Dernier message: 12/12/2008, 08h56
  5. Redirection automatique apres quelques secondes
    Par theotaki dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 11/05/2007, 12h25

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