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 :

Modifier l'event OnbeforeUnload d'une page


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Points : 51
    Points
    51
    Par défaut Modifier l'event OnbeforeUnload d'une page
    Bonjour,

    Je recherche désespérément un moyen de modifier l'évènement onbeforeUnload d'une page dynamiquement.

    C'est à dire que lorsque l'on clique sur un bouton ou autre de la page, l'event soit modifié pour prévenir l'utilisateur que s'il quitte la page tout sera perdu.

    Déjà, est ce que c'est possible ?

    En vous remerciant par avance !

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Bonjour,

    Cet évènement doit être précisé dans le <body>. Le problème c'est que toutes les méthodes pour changer/fermer la page n'activent pas cet évènement . Quel code utilisez-vous pour changer de page ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Points : 51
    Points
    51
    Par défaut
    Bonjour,

    D'abord merci pour cette réponse matinale !

    J'envisageais d'utiliser le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    onclick="document.body.onBeforeUnload = 'fermer();'"
    Et la fonction fermer exécuterait le message d'alerte pour prévenir l'utilisateur.

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    pourquoi ne le fait donc tu pas ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Points : 51
    Points
    51
    Par défaut
    Ça ne fonctionne pas, alors que l'event change bien, mais quand je quitte la page rien ne se passe.

    Pourtant quand je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(document.body.onbeforeunload);
    Il me retourne 'fermer();'.

    J'ai oublié de préciser que je faisais mes essais avec firefox 3.6

    Merci pour le coup de main en tout cas.

  6. #6
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Ha oui, j'en reviens à ma question initiale alors, quelles instructions utilisez-vous pour fermer la page ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Points : 51
    Points
    51
    Par défaut
    Rien de spécial, c'est juste l'utilisateur qui quitte la page en cours.

    Et pour le moment pour effectuer mes tests la fonction "fermer()" contient juste un "alert('test');" pour vérifier qu'elle est bien exécutée. Mais à terme elle permettra de vérifier qu'un ou plusieurs champs sont bien remplis.

  8. #8
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Citation Envoyé par wylls Voir le message
    Rien de spécial, c'est juste l'utilisateur qui quitte la page en cours.
    Comment quitte-t-il la page en cours ? En faisant une action sur la page ou bien en fermant la fenêtre avec la petite croix ?

    Si c'est la première solution, j'aimerais comprendre ce qu'il se passe réellement. Un envoi de formulaire, un redirect, un submit par une fonction JS, ... ?

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    ça serait plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="document.body.onBeforeUnload = fermer;"
    Citation Envoyé par wylls Voir le message
    Mais à terme elle permettra de vérifier qu'un ou plusieurs champs sont bien remplis.
    Ben oui, mais quel intérêt puisque de toutes façons tout sera perdu ?

    A+

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Points : 51
    Points
    51
    Par défaut
    En fait, je prévois d'envisager plusieurs cas, car l'utilisateur pourra quitter le formulaire de plusieurs façon :

    - Soit en changeant de page, en cliquant sur un lien, c'est là que j'ai besoin du onbeforeunload
    - Soit en cliquant sur fermer la fenêtre (fenêtre que je crée pour lui afficher le formulaire), dans ce cas je mettrai ma fonction femer() sur le bouton de fermeture de fenêtre.

    Sinon, je ne fais pas de formulaire réellement, mais une fenêtre avec des champs mis à jour avec ajax, et ajax met à jour les champs d'un enregistrement 'temporaire' dans ma base de données.

    Et si l'utilisateur ne rempli par les champs impératifs, je le préviens lorsqu'il quitte la page que l'enregistrement sera supprimé complétement s'il ne rempli pas ce ou ces champs.

  11. #11
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut href - onclick
    J'ai déjà eu des soucis avec les href et onclick sur un lien. Il ne tenait pas compte du onclick ou bien les changements que je voulait effectuer n'était pas encore impacté lorsqu'il lançait son href.

    Sauirez-vous mettre le "changement de page" dans la fonction fermer() ?

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Points : 51
    Points
    51
    Par défaut
    Désolé, mais en te lisant je me suis aperçu que je n''étais pas très clair sur le point suivant :

    - Soit en changeant de page, en cliquant sur un lien, c'est là que j'ai besoin du onbeforeunload

    En fait il faut lire n'importe quel lien, il peut quitter la page en changeant de site, ou en changeant de page de mon site. Et donc je ne peux pas modifier tout les liens de ma page.

  13. #13
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut Prout
    Bon, je n'arrive pas à lancer la fonction fermer une fois changée via le onclick...

    Par contre, le onBeforeUnload lance lui-même un confirmation et requiert donc une valeur de retour. N'oubliez pas le :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ... onBeforeUnload=return fermer(); ...

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Points : 51
    Points
    51
    Par défaut
    Merci pour l'info, mais ça ne fonctionne toujours pas, sic !

    En attendant, j'ai mis un div qui bloque toute ma page sauf ma fenêtre, et donc l'utilisateur est obligé de cliquer sur la croix de ma fenêtre pour virer le div. Et là, je peux gérer l'event comme je veux.
    Mais bon, c'est pas terrible comme solution, car il suffit de rafraichir la page....

    Si jamais quelqu'un a une solution, surtout qu'il n'hésite pas ;-).

  15. #15
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Et avec ?
    (JS est sensible à la casse)

    A+

  16. #16
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    A priori non. Je pense qu'il faut regarder du côté des <a> et des modifications du body. Il n'a pas l'air de tenir compte soit des modifications du body, soit du body lui même lorsqu'on fait un href...

Discussions similaires

  1. le OnBeforeUnload dans une page .ascx
    Par zaineb.z dans le forum ASP.NET
    Réponses: 8
    Dernier message: 15/04/2008, 16h58
  2. Modifier toutes les URL d'une page apres chargement.
    Par landsteph dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/08/2007, 21h11
  3. [Web] Modifier un document XML via une page Web
    Par Oli_Ifre dans le forum APIs
    Réponses: 1
    Dernier message: 26/04/2007, 09h30
  4. JSF + Tiles, modifier seulement le body d'une page
    Par LeVickingRoux dans le forum JSF
    Réponses: 1
    Dernier message: 14/02/2007, 13h08
  5. modifier color de scroll d'une page web+horloge[html+javasc]
    Par am.adnane dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/12/2005, 14h26

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