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 :

Conflit entre 2 window.open


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 80
    Par défaut Conflit entre 2 window.open
    Salut à tous,

    Un nouveau soucis qui me les .......

    J'ai les deux fonctions javascript suivantes :

    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
     
    <script language="JavaScript">
    	//Popup pour la recherche sur les métiers
    	function ouvreFenetreFct(nomPage){
     
    		//Pour centrer la fenêtre 
    		var posTop=(screen.height-100)/2;
            var posGauche=(screen.width-400)/2;
     
    		if(!window.fenetreLieu) {
    			window.fenetreFct = window.open(nomPage,
    								'top='+posTop,
    								'left='+posGauche,
    								'width=400 , height= 100, resizable=no, location=no, menubar=no, status=no, scrollbars=yes, menubar=no');
    		}
     
    		else 
    			alert('Fermez l\'autre fen\352tre svp');
    	}  
     
    	//Popup pour la recherche de la commune/Code Postal
    	function openWindowLieu(pageName){
     
    		//Pour centrer la fenêtre 
    		var positionTop=(screen.height-100)/2;
            var positionGauche=(screen.width-400)/2;
     
    		if(!window.fenetreFct) {
    			window.fenetreLieu = window.open(pageName,
    								'top'=+positionTop,
    								'left='+positionGauche,
    								'width=400 , height= 100, resizable=no, location=no, menubar=no, status=no, scrollbars=yes, menubar=no');
    			}
     
    		else 
    			alert('Fermez l\'autre fen\352tre svp');
    	}
     
    </script>
    J'ai mis des conditions pour tester si l'une ou l'autre était ouverte, en vain...
    Si je mets en commentaire un des deux window.open, cela fonctionne (vérifié en mettant un alert dans le corps de la fonction).
    Si vous avez la solution, je vous en serai bien reconnaissant !

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    - déclare fenetreFct et fenetreLieu comme variables globales (et initialise les) ;
    - window.open prend 3 arguments et pas 2 ;
    - il y a des erreurs de concaténation (présence d'une virgule).

    Code javascript : 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
     
    <script type="text/javascript">
    var fenetreFct=null, fenetreLieu=null;
     
    //Popup pour la recherche sur les métiers
    function ouvreFenetreFct(nomPage)
    {
     
    	//Pour centrer la fenêtre 
    	var posTop=(screen.height-100)/2;
            var posGauche=(screen.width-400)/2;
     
    	var args="";
    	args = "top="+posTop+",left="+posGauche+",width=400 , height= 100, resizable=no, location=no, menubar=no, status=no, scrollbars=yes, menubar=no";
     
    	if(fenetreLieu==null) 
    	{
    		fenetreFct = window.open(nomPage,"",args);
    	}
     
    	else 
    		alert('Fermez l\'autre fen\352tre svp');
    }  
     
    //Popup pour la recherche de la commune/Code Postal
    function openWindowLieu(pageName)
    {
     
    	//Pour centrer la fenêtre 
    	var positionTop=(screen.height-100)/2;
    	var positionGauche=(screen.width-400)/2;
     
    	var args="";
    	args = "top="+positionTop+",left="+positionGauche+",width=400 , height= 100, resizable=no, location=no, menubar=no, status=no, scrollbars=yes, menubar=no";
     
     
    	if(fenetreFct==null) 
    	{
    		fenetreLieu = window.open(pageName,"",args);
    	}
    	else 
    		alert('Fermez l\'autre fen\352tre svp');
    }
     
    </script>

    Maintenant, pour que ton code fonctionne complètement, il faut remettre à null tes variables fenetreFct et fenetreLieu lors de la fermeture des fenêtres. Tu gères ça lors de l'événement onunload des fenêtres filles.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 80
    Par défaut
    Merci bien voisin Lyonnais pour la syntaxe et l'aide ! Ca s'ouvrait quand même sur Firefox...

    Parfois je cherche très mal mes solutions. Sans conditions, le fait que deux fonctions possèdent pour chacune, un window.open(), provoque un conflit.
    Pour contourner ce problème, j'ai opté pour garder qu'une seule fonction et pour l'appel il n'y aura que l'argument qui change. L'argument comportant l'adresse de la popup ! Et dire que je fais du C/C++ et tout autre langage de programmation

    Nouveau 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
     
    <script language="JavaScript">
    	//Popup pour la recherche sur les métiers
    	function ouvreFenetre(nomPage){
     
    		//Pour centrer la fenêtre 
    		var posTop=(screen.height-400)/2;
            var posGauche=(screen.width-600)/2;
     
    		var args="";
    	    args = "top="+posTop+",left="+posGauche+",width=600 , height= 400, resizable=yes, location=no, menubar=no, status=no, scrollbars=yes, menubar=no";
     
    		window.open(nomPage,"",args);
     
    		}
     
    </script>

  4. #4
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par kev42100 Voir le message
    Ca s'ouvrait quand même sur Firefox...
    Ton code ne fonctionnait pas même sous FF du fait des erreurs de syntaxe

    Citation Envoyé par kev42100 Voir le message
    Parfois je cherche très mal mes solutions. Sans conditions, le fait que deux fonctions possèdent pour chacune, un window.open(), provoque un conflit.
    Le code que j'ai posté fonctionne sans problème, il n'y a pas de "conflit"

    Citation Envoyé par kev42100 Voir le message
    Pour contourner ce problème, j'ai opté pour garder qu'une seule fonction et pour l'appel il n'y aura que l'argument qui change. L'argument comportant l'adresse de la popup !
    C'est une solution, d'autant plus que les deux fonctions sont identiques

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

Discussions similaires

  1. Conflit entre les 2 unit Windows et Graphics
    Par mtloper dans le forum Langage
    Réponses: 1
    Dernier message: 20/03/2008, 22h28
  2. Conflit entre bases de données
    Par BRODU dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/10/2004, 11h40
  3. conflit entre couleurs
    Par khayyam90 dans le forum OpenGL
    Réponses: 2
    Dernier message: 03/07/2004, 18h00
  4. QueryString avec window.Open ??
    Par christine dans le forum ASP
    Réponses: 4
    Dernier message: 29/08/2003, 09h27
  5. [Technique] Conflits entre plusieurs requêtes
    Par Neowile dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 24/03/2003, 09h37

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