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 :

Intercepter la fermeture d'un popup


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 73
    Points : 42
    Points
    42
    Par défaut Intercepter la fermeture d'un popup
    J’ai une fenêtre qui ouvre un popup.

    Lorsque le popup s’ouvre, je change l’opacité de la fenêtre appelante; le popup est en avant plan et il faut absolument fermer le popup pour retourner sur la fenêtre et remettre l’opacité dans la fenêtre (l’opacité décroît progressivement via l’utilisation d’une boucle).

    Lorsque je clic sur le bouton ‘Fermer’, cela fonctionne pas contre lorsque je clic sur la croix pour fermer le popup cela ne fonctionne pas.

    J’utilise la même méthode (j’ai défini le ‘onbeforeunload’), je passe bien dans ma méthode mais la boucle ne fonctionne pas, j’utilise ‘setInterval’ pour la boucle permettant de réduire l’opacité…

    Quelqu’un à 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
    Points : 4 835
    Points
    4 835
    Par défaut
    un morceau de code peut-être ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Points : 330
    Points
    330
    Par défaut
    body, onunload ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 73
    Points : 42
    Points
    42
    Par défaut
    Oui effectivement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    window.onbeforeunload = function()
    {
    	i=100;
    	closeModal();
    };
    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
     
    function closeModal()
    {
    	if((!timer))
    	{
    		//alert('closeModal');
    		timer = setInterval(function()
    		{
    			if(i==0)
    			{
    				clearInterval(timer);
    				calque.style.display='none';
    				timer = false;
    				window.close();
    			}
    			else
    			{
    				if(IsIE)
    				{calque.filters[0].opacity = i*0.75;}
    				else
    				{calque.style.opacity=(i/100)*0.75;}
    				i = Math.max(i-10,0);
    			}
    		}, 1);
    	}
    	return true;	
    }

  5. #5
    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
    est ce que i et timer ont été déclaré en variables globales ???

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 73
    Points : 42
    Points
    42
    Par défaut
    Oui en début de script juste après cette balise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <script>
    var IsIE=!!document.all,timer;
    var i=0;
    var calque=window.opener.document.getElementById('overlay');

  7. #7
    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
    ok ok ...
    poste la page complète , on va regarder ce qui cloche ^^

    tu n'as aucun message d'erreur ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 73
    Points : 42
    Points
    42
    Par défaut
    Voici le script complet

    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
    47
    48
    49
    50
    51
    52
    53
    54
     
    <script>
    var IsIE=!!document.all,timer;
    var i=0;
    var calque=window.opener.document.getElementById('overlay');
    var bSubmit=false;
     
    window.onsubmit = function()
    {
    	bSubmit=true;
    }
     
    window.onbeforeunload = function()
    {
    	if(!bSubmit)
    	{
    		i=100;
    		closeModal();
    	}
    };	
     
    function valider() 
    {
    	i=100;
    	closeModal();
    }
     
    function closeModal()
    {
    	if((!timer))
    	{
    		alert('closeModal'+i+IsIE);
    		timer = setInterval(function()
    		{
    			if(i==0)
    			{
    				clearInterval(timer);
    				calque.style.display='none';
    				timer = false;
    				window.close();
    			}
    			else
    			{
    				if(IsIE)
    				{calque.filters[0].opacity = i*0.75;}
    				else
    				{calque.style.opacity=(i/100)*0.75;}
    				i = Math.max(i-10,0);
    			}
    		}, 1);
    	}
    	return true;	
    }
    </script>
    Et pas de message d'erreur

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Points : 330
    Points
    330
    Par défaut
    A priori, lors du unload, javascript est déchargé. Le code ne s'exécute plus.

    Pour contourner cela, après un petit test, j'ai déplacé le contrôle dans le parent :
    function launch() {
    var F1 = window.open("TEST_BIG.html","fenetre1","width=310,height=400,left=0,top=0");
    inter = setInterval( function(){if(!F1.name){alert('OFF'); clearInterval(inter)}},50 );
    }
    Ainsi 'window.close()', ou fermeture de la fenêtre, c'est intercepté

    n.b. : un capture event de l'unload du child par le parent est inefficace

    Si cela peut t'inspirer...

Discussions similaires

  1. [MFC] Intercepter la fermeture d'une CPropertySheet
    Par Philippe320 dans le forum MFC
    Réponses: 10
    Dernier message: 29/09/2006, 09h14
  2. evenement de fermeture d'une popup
    Par mikky dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/09/2006, 11h25
  3. Rafraichir une fenetre parent par la fermeture d'un popup
    Par loleske dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 19/05/2006, 08h14
  4. fermeture d'une popup
    Par zoidberg dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/05/2006, 12h02
  5. pb fermeture d'un popup
    Par frederic92 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/03/2006, 22h17

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