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 :

Empêcher la sortie d'une page


Sujet :

JavaScript

  1. #1
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut Empêcher la sortie d'une page
    salut,
    J'ai fait un script PHP qui permet à un utilisateur de modifier des valeurs sur la page.
    Une fois toutes les modifications éffectuées, il doit sauver les changements. J'utilise pour cela une fonction AJAX.
    Quand l'utilisateur quitte la page, je souhaite vérifier qu'il a bien sauvé son boulot. Dans le cas contraire je voudrais afficher un message et rester sur la page.
    Pour tester je me sert d'un attribut d'un objet qui passe à 1 quand la sauvergarde a été effectuée.
    Pour l'instant j'exécute ma fonction sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onunload="CheckIfDataSaved()">
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function CheckIfDataSaved(){
    	if (obj.saved == 0){
    		alert('Vous n\'avez pas sauvegardé vos changements !');
    		return false;
    	}
    }
    ça fonctionne au détail près que l'utilisateur quitte la page dans tous les cas.

    Y'a t-il un moyen d'empêcher de quitter la page?

  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 659
    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 659
    Billets dans le blog
    1
    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 éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    impec !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    window.onbeforeunload = function (){
    	if (obj.saved == 0){
    		return 'Vous n\'avez pas sauvegardé vos changements !';
    	}
    }

  4. #4
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    window.onbeforeunload = function (){
     
    	if(obj.saved == 0)?{
    		return confirm("Vous n\'avez pas sauvegardé vos changements !, Voulez vous quitter ?");
    	}
    }
    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 !

  5. #5
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    Le ? après la condition ne pose t-il pas problème (chez moi si en tout cas) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    window.onbeforeunload = function (){
     
    	if(obj.saved == 0){
    		return confirm("Vous n\'avez pas sauvegardé vos changements !, Voulez vous quitter ?");
    	}
    }
    Ta solution est bien car le prompt n'affiche un message plus clair.
    Mais le souci c'est que le message généré par onbeforeunload s'affiche quand même ensuite...

  6. #6
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    Tiens un lien
    de demo sympa (c est le même exemple)

    http://www.4guysfromrolla.com/demos/...ame=tom&age=27

    D apres la Doc MSDN il y pas moyen de customiser le prompt

    http://msdn.microsoft.com/workshop/a...foreunload.asp

    Remarks

    When a string is assigned to the returnValue property of window.event, a dialog box appears that gives users the option to stay on the current page and retain the string that was assigned to it. The default statement that appears in the dialog box, "Are you sure you want to navigate away from this page? ... Press OK to continue, or Cancel to stay on the current page.", cannot be removed or altered.
    Desolé
    Si quelqu un à une solution je suis preneur

  7. #7
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    Merci pour ces sources d'infos.
    D'après ce que j'ai compris, inutile d'utiliser prompt car un message s'affichera automatique à l'appelle de return.
    Ce messsage contient un message par défaut qu'on ne peut pas enlever. Par contre il est possible de le personnaliser en ajoutant une chaine après return.
    soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    window.onbeforeunload = function (){
    	if (obj.saved == 0){
    		return 'Vous n\'avez pas sauvegardé vos changements !';
    	}
    }

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

Discussions similaires

  1. [MySQL] Sortie dans une page HTML puis dans un document Word ou excel
    Par black is beautiful dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/07/2008, 22h26
  2. Réponses: 3
    Dernier message: 15/01/2008, 14h43
  3. empécher la réactualisation d'une page à l'utlisateur
    Par questionneuse dans le forum Général Conception Web
    Réponses: 13
    Dernier message: 13/07/2006, 15h34
  4. Empêcher la réactualisation d'une page
    Par licorne dans le forum Langage
    Réponses: 6
    Dernier message: 14/06/2006, 15h52
  5. empêcher le chargement d'une page
    Par dj-julio dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/01/2006, 15h25

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