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 :

évènement et div


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Par défaut évènement et div
    Bonjour,

    J'ai le code suivant qui ouvre une boite au dessus d'un iframe
    appelé avec colorPickerNamespace.attachColorPicker()
    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
    55
    56
    57
    58
    var colorPickerNamespace = {
    	cp:{},
     
    	createColorPicker:function (){
    		var imgBase = 'creating/';
     
    			//On crée la fenêtre contenant le sélecteur de couleur
    			var CE1=null;
    			CE1=document.createElement("div");
    			CE1.id='ColorPicker';
    			document.getElementById("actbtn_color").insertBefore(CE1,null);
    			var txt=document.createTextNode("Select color : ");
    			document.getElementById("ColorPicker").appendChild(txt);
     
     
    			var CE21=null;
    			CE21=document.createElement("img");
    			CE21.id='cp_ColorIcon';
    			CE21.src=imgBase+'/cp_mini_icon.png';
    			document.getElementById("ColorPicker").appendChild(CE21);
     
    	},
     
    	attachColorPicker:function(input, cmd, bColor)
    	{
    		 this.createColorPicker();
    		 this.SetId(input)
    		 this.showColorPicker();
    		 this.SetEvents();
    		 if(bColor==null ||bColor==""){this.cp.baseColor='#000000'}
    	},
     
    	SetEvents:function(){
    		this.addEvt(this.cp.ColorPicker,"focus",this.showColorPicker);
    		this.addEvt(this.cp.cpColorIcon,"click",this.hideColorPicker);
    	},
     
    	SetId:function(i){
    		this.cp.cpInput=document.getElementById(i);
    		this.cp.ColorPicker=document.getElementById("ColorPicker");
    		this.cp.cpColorIcon=document.getElementById("cp_ColorIcon");
    	},
     
    	addEvt:function(o,e,f){ 
    			if(window.addEventListener) o.addEventListener(e, f, false); 
    				else o.attachEvent("on"+e,f);
    	},
     
    	hideColorPicker:function(){
    		this.cp.ColorPicker.style.display  = 'none';
    	},
     
    	showColorPicker:function(){
    		document.getElementById("ColorPicker").style.display  = 'block';
    	}
     
     
    }
    La fenêtre apparait parfaitement, cependant, j'ai un souci avec la gestion des évènements.
    En effet, lorsque je clique sur la fenêtre, le focus est donné à l'iframe en dessous et je ne parviens pas à fermer la fenêtre issue de colorPickerNamespace.

    Pourquoi le focus n'est pas sur la fenêtre lorsque je clique dessus et pourquoi ne se ferme-t-elle pas lorsque je clique sur l'image cp_ColorIcon?

    Un petit coup de main, svp
    Merci.

  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
    Par défaut
    stopPropagation et cancelBubble te permettront de bloquer l'effet du clic au niveau du div et ne pas qu'il se propage aux élément sous-jacents
    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 éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Par défaut
    Merci

    mais j'utilise ces fonctions pour la première fois.

    Où dois-je placer ce code dans mon espace ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (!e) var e = window.event;
    	e.cancelBubble = true;
    	if (e.stopPropagation) e.stopPropagation();

  4. #4
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Par défaut
    J'ai bien ajouter ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	hideColorPicker:function(e){
    		var event = e || window.event;  
    		document.getElementById("ColorPicker").style.display  = 'none';  
    		if (event.stopPropagation) {    
    			event.stopPropagation();  
    		} else {   
    		event.cancelBubble = true;
    		} 
     
    	},
    dons la focntion qui force la fermeture de la boite mais en fait, le curseur continue à passer sur l'iframe ????

    En fait, je me rend copte que lm'évènement onclick sur le div n'est même pas reconnu car si j'ajoute :
    ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	hideColorPicker:function(e){
    		var event = e || window.event;  
    alert("c cliqué!");
    		document.getElementById("ColorPicker").style.display  = 'none';  
    		if (event.stopPropagation) {    
    			event.stopPropagation();  
    		} else {   
    		event.cancelBubble = true;
    		} 
     
    	},
    la boite de dialogue contenant "c cliqué! n'apparait même pas lorsque je clique sur le div

Discussions similaires

  1. évènements chargement DIV
    Par TitBen dans le forum jQuery
    Réponses: 12
    Dernier message: 12/04/2010, 13h55
  2. Superposer <div> sans bloquer les événements
    Par apiflo dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 26/08/2009, 13h21
  3. [DOM] Pb gestion de l'évènement mouseout sur une <DIV>
    Par rvux69 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/01/2007, 21h27
  4. Ajout événement onclick à objet DIV
    Par sbernard dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/10/2006, 15h13
  5. Ajouter un événement à une div
    Par seb-oulba dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/09/2006, 19h39

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