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 :

IE7 et onbeforeunload KO


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre exp�riment� Avatar de aperrin
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    221
    D�tails du profil
    Informations personnelles :
    �ge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 221
    Par d�faut IE7 et onbeforeunload KO
    Bonjour
    Je souhaite avertir l'utilisateur lors de la sortie d'un formulaire avec des donn�es non enregistr�, en ne passant pas par les boutons standard valider annuler (en cliquant directement sur le menu par exemple).
    Voici le code :
    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
     
     <head>
        <script type="text/javascript">
     
    	function alerteChangementPage(){
      		if(modif==true)
       	 		return confirm('Les modifications non sauvegardées ne seront pas conservées.') ;
    	}
     
    	function switchModification(){
    		if(modif == false) {
    			modif = true;
    		}
    	}
    </script>
      </head>
      <body onbeforeunload="return alerteChangementPage();" onchange="javascript:switchModification()">
    ....
    Cela marche sur firefox 3 mais pas sur IE7.

    Quelqu'un � t-il une id�e ?

  2. #2
    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
    Par d�faut
    essaye :

    window.onbeforeunload = alerteChangementPage;
    plut�t que sur le body

    de plus je ne suis pas certain que la m�thode onchange fonctionne sur le body

  3. #3
    Membre exp�riment� Avatar de aperrin
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    221
    D�tails du profil
    Informations personnelles :
    �ge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 221
    Par d�faut
    de plus je ne suis pas certain que la m�thode onchange fonctionne sur le body
    Sur ff 3 si.
    Mais �videmment cela ne marche pas sous IE7.
    Y a t-il une solution pour d�terminer si un changement � eu lieu (�quivalent d'un window.onchange) dans une page sous IE7 ?

  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
    Par d�faut
    non , il te faut r�cup�rer la valeur de tes champs au load de ta page , puis v�rifier les valeurs au moment ou tu quittes.

  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 : 55
    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
    Tu peux initialiser un flag au chargement, puis dans les �l�ments susceptibles de changer, tu mets le onchange qui met � jour le flag, du style :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    <script type="text/javascript">
    var page_changee = false;
    document.getElementById('ton_champ_qui_change').onchange = function(){page_changee=true;}
    window.onbeforeunload = if(page_changee){alerteChangementPage}; 
    </script>
    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
    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
    Par d�faut
    j'avais pens� au flag, mais si l'utilisateur , annule sa modification ( exemple ctrl+z )
    le flag sera a true alors que la page contient bien les donn�es d'origine ^^

  7. #7
    Membre exp�riment� Avatar de aperrin
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    221
    D�tails du profil
    Informations personnelles :
    �ge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 221
    Par d�faut
    Voici une solution compl�te et qui marche sous IE7 et FF3 :
    Avantage c'est que les �v�nements sont ajout�s par programmation
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
     <script type="text/javascript">
    /* <![CDATA[ */ 
     
    /////////////////////////////////////////////////////////////////////////////////
    	// Partie nécessaire pour afficher un message
    	// si l'utilisateur quitte une page
    	// ou il y a eu des changements
    	////////////////////////////////////////////////////////////////////////////////
     
    	var isPageModified = false;
     
       	function setPageModified(){
      		if(isPageModified == false) {
    			isPageModified = true;
    			// alert('setPageModified');
    		}
    	}
     
        window.onbeforeunload = function (e) {
    		message = 'Les modifications non sauvegardées ne seront pas conservées.';
    			var e = e || window.event;
    		if(isPageModified == true) {	
    			// For IE and Firefox
    			if (e) {
    				e.returnValue = message;
    			}
     
    			// For Safari
    			return message;
    		}
    	};
     
    // Cette partie avec prototype permet de
    // lister les élements dom du formulaire et d'ajouter un
    // évenement  onchange sur chaque élement (input, case à cocher, ...)
    Event.observe(window, 'load', function(){
    	var listeElement = Form.getElements(document.forms[0]);
    	$A(listeElement).each(function(element) {
    		// alert('element : ' + Element.inspect(element));
    		Event.observe(element, 'change', setPageModified);
    	});	
    });			
     
    /* ]]> */
    </script>
    �videmment comme fait remarqu� auparavant si l'utilisateur , annule sa modification ( exemple ctrl+z ) le flag sera a true alors que la page contient bien les donn�es d'origine.
    De plus si des �lements sont ajout�s par programmation alors il ne dispose pas de l'�v�nement onchange.
    Enfin il faut ajouter isPageModified = false; sur les boutons sur lesquels on ne veut pas voir appara�tre la boite de dialogue.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Checkbox sous IE7
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 3
    Dernier message: 20/03/2006, 23h52
  2. Code qui ne marche plus sur IE7 Beta
    Par Death83 dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 18/03/2006, 00h15
  3. Modification du caption des boutons lors d'un onBeforeUnload
    Par nico-pyright(c) dans le forum G�n�ral JavaScript
    R�ponses: 13
    Dernier message: 23/08/2005, 17h12
  4. IE7 langue En
    Par badrou dans le forum IE
    R�ponses: 3
    Dernier message: 16/08/2005, 16h10

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