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 :

Un message à la fermeture de la fenêtre


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut Un message à la fermeture de la fenêtre
    Bonjour à tous,

    Dans une interface administration privée, je souhaite, pour des mesures de sécurité, forcer à cliquer un lien "sortie" qui tuerait la session PHP plutôt que la croix de fermeture du navigateur. J'ai écrit la petite fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function avert_fermeture()
    {
    if(confirm('Avez-vous pensé à cliquer sur le bouton \"Sortie\" pour vous déconnecter de votre interface Administration ? Le fait de laisser votre session active constitue une faille de sécurité pour d\'éventuels hackers.')){
    	window.close();
    }else{
    	return false;
    }
    }
     
    window.onbeforeunload = function (){avert_fermeture()};
    Le message s'affiche bien, mais le navigateur se ferme quelque soit le choix que l'on clique. Mais est ce que c'est possible ?
    Où le choix du user est prioritaire quoi que l'on fasse ?

    Merci d'avance de vos lumières.

  2. #2
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Précision : je vois cette fonction sur le web :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script type="text/javascript">
      window.onbeforeunload = function(e){ return 'Avez-vous pensé à cliquer sur le bouton \"Sortie\" pour vous déconnecter de votre interface Administration ? Le fait de laisser votre session active constitue une faille de sécurité pour d\'éventuels hackers...'; } 
    </script>
    Mais elle se déclenche à chaque clic sur un lien interne ce qui n'est pas le but. Je voudrais que ce soit vraiment à le fermeture du navigateur...

  3. #3
    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
    Dans une interface administration privée
    Je comprends bien pourquoi tu apportes cette précision, cependant il n'existe pas de version de JavaScript spécifique aux interfaces d'administration donc d'une part, il semble évident qu'il ne doit pas être possible d'empêcher de quitter une page et encore moins de d'empêcher de fermer le navigateur, d'autre part, il est malgré tout possible de demander à l'utilisateur s'il veut vraiment quitter la page (un simple onbeforeunload = return false suffit) mais JavaScript est incapable de savoir si tu continues à naviguer sur le même site ou non.
    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

  4. #4
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Merci de ta précision.
    Effectivement, il ne s'agit en aucun cas de forcer qui que ce soit à rester sur une page. C'est privé.

    J'ai essayé le unbeforeunload, mais il se produit à chaque clic sur un lien interne au cours de la navigation au sein de l'interface admin, ce qui est un peu pénible... Il n'est pas possible de le déclencher uniquement à la fermeture du navigateur (la vraie "sortie") ? car le but est de faire en sorte qu'il clique sur un lien de sortie pour détruire la session.

  5. #5
    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
    Une solution pourrait être de spécifier un nom de classe spécifique pour les liens autorisés (par exemple "lienOK") puis de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    window.onload = function(){
        window.onbeforeunload = function(){return false};
        var tempLiens = document.getElementsByTagName('a'), nbLiens = tempLiens.length;
        for(var i=0; i<nbLiens; i++){
            if(templiens[i].className == 'lienOK'){
                tempLiens[i].onclick = function(){window.onbeforeunload = function{return true;}}
            }
        }
    }
    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

  6. #6
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Oui...je pense que cette idée est bonne !
    Il y avait quelques bugs de syntaxe dans la console FF, j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <script type="text/javascript">
    window.onload = function(){
        window.onbeforeunload = function(){return 'Avez-vous pensé à cliquer sur le bouton \"Sortie\" pour vous déconnecter de votre interface Administration ? Le fait de laisser votre session active constitue une faille de sécurité pour d\'éventuels hackers...'};
        var tempLiens = document.getElementsByTagName('a'), nbLiens = tempLiens.length;
        for(var i=0; i<nbLiens; i++){
            if(tempLiens[i].className == 'lienMenu'){
                tempLiens[i].onclick = function(){window.onbeforeunload = function(){return true;}}
            }
        }
    }
    </script>
    Mais là, problème : non seulement mon message d'alerte ne s'affiche pas, mais il ne tient pas compte de l'exception et se déclenche sur les liens même si leur classe est "lienMenu".

Discussions similaires

  1. Message d'erreur à la fermeture d'une fenêtre
    Par Pascal Lob dans le forum VB.NET
    Réponses: 5
    Dernier message: 16/11/2011, 11h20
  2. Exécuter une action à la fermeture d'une fenêtre
    Par wwave dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 28/07/2005, 15h15
  3. Fermeture d'une fenêtre .dos
    Par VirginieGE dans le forum Windows
    Réponses: 2
    Dernier message: 03/06/2005, 13h56
  4. executer une fonction à la fermeture d'une fenêtre
    Par Oluha dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/02/2005, 09h46
  5. Arrêter un ttmt en cours, lors de la fermeture d'une fenêtre
    Par teska dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/12/2004, 14h08

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