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 :

Problème avec la gestion des événements


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Points : 22
    Points
    22
    Par défaut Problème avec la gestion des événements
    Bonjour,

    Je souhaite crée une méthode javascript qui affiche une popup css (calque).
    Cette methode prend en paramètre l'identifiant du calque, la class css de départ et la class css d'affichage.
    J'ai également besoin de récupérer la position du clic pour afficher mon calque au bon endroit.

    J'ai donc le code suivant:
    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
    59
    var actionMenuId = null;
    var actionMenuClassDown = null;
    var actionMenuClassUp = null;
     
    document.oncontextmenu=catchEvent;
    document.onclick=hideMenu;
     
    function showActionMenu(menuId,classUp,classDown){
    	actionMenuId = menuId;
    	actionMenuClassDown = classDown;
    	actionMenuClassUp = classUp;
    }
     
    function catchEvent(e){
     
    	var actionMenu = document.getElementById(actionMenuId);
    	if(actionMenu){
    		cX = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.clientX;
    		xY = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.clientY;
    		var rightedge= document.body.clientWidth-cX;
    		var bottomedge= document.body.clientHeight-cY;
     
    		if (rightedge>actionMenu.offsetWidth) {
    			actionMenu.style.left=document.body.scrollLeft+cX;
    		}else {
    			actionMenu.style.left=document.body.scrollLeft+cX-actionMenu.offsetWidth;
    		}
     
    		if (document.body.scrollLeft>document.body.scrollLeft+cX-actionMenu.offsetWidth && rightedge<actionMenu.offsetWidth){
    			actionMenu.style.left=document.body.scrollLeft;
    		}
     
    		if (bottomedge>actionMenu.offsetHeight) {
    			actionMenu.style.top=document.body.scrollTop+cY;
    		}
    		else {
    			actionMenu.style.top=document.body.scrollTop+cY-actionMenu.offsetHeight;
    		}
     
    		if (document.body.scrollTop>document.body.scrollTop+cY-actionMenu.offsetHeight && bottomedge<actionMenu.offsetHeight){
    			actionMenu.style.top=document.body.scrollTop;
    		}
     
    		actionMenu.className=actionMenuClassUp;
    	}
    	return false;
    }
     
    function hideMenu(){
    	var actionMenu = document.getElementById(actionMenuId);
    	if(actionMenu!=null){
    		actionMenu.className=actionMenuClassDown;
    	}
    	actionMenuId = null;
    	actionMenuClassDown = null;
    	actionMenuClassUp = null;
    }
     
    if (navigator.appName.substring(0,3) == "Net") document.captureEvents(Event.MOUSEDOWN);
    Ce qui semble pauser problème est que mon événement catchEvent() et ma foncion d'affichage showActionMenu() se lance en même temps et qu'elles ne peuvent donc pas partager de variables ...
    Avez vous une autre solution à ce problem ?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    as-tu vraiment besoin de cette fonction de définitions de variables "showActionMenu"?

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    Au sinon je ne vois pas comment gérer mon événement en fonction des paramètres de mon bouton. Si tu veux les boutons et leur action javascript showActionMenu() sont générés dynamquement avec du PHP. C'est le bouton qui indique au script quel calque doit apparaître.

    Cependant c'est la 1er fois que je mets le nez dans du javascript, il y a peut être plus simple.

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    Personne à une idée ?

    Merci d'avance

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    Toujours pas ?

Discussions similaires

  1. [ZF 1.7] Zend_Log problème avec la gestion des erreurs
    Par miya dans le forum Zend Framework
    Réponses: 9
    Dernier message: 26/05/2009, 19h33
  2. Problème avec la gestion des fichier dans une JList()
    Par chebmo1986 dans le forum Composants
    Réponses: 3
    Dernier message: 19/02/2009, 00h49
  3. Problème avec gotoAndPlay, gestion des animations
    Par Pimprenelle dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 01/06/2008, 22h24
  4. Problème avec la gestion des événements
    Par Franck.H dans le forum SDL
    Réponses: 32
    Dernier message: 26/02/2007, 17h01
  5. Problème avec la "Gestion des bibliothèques dynamiques"
    Par GoustiFruit dans le forum Delphi
    Réponses: 15
    Dernier message: 31/05/2006, 10h54

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