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 :

Transmission des événements sous windows


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de dervish
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Points : 105
    Points
    105
    Par défaut Transmission des événements sous windows
    Bonjour,
    je cherche à singer le comportement du Alt + tab pour une série de fenêtres inclues dans une page. Le comportement est le suivant:
    Quand on fait un onkeydown sur la touche Alt, une div apparaît avec la liste des fenêtres dispo sur la page. Quand ensuite un fait un onkeydown (ou onkeypress) sur une autre touche, mettons 'l', cela déplace un curseur dans la liste. Enfin quand on a le onkeyup sur Alt, la div disparait et la fenêtre à le focus.
    Sous linux, ça fonctionne correctement. Par contre, sous windows, que ce soit sur ff3 ou ie7, le fait d'appuyer sur la seconde touche, fait que l'évènement onkeyup sur le Alt ne se déclenche plus...
    Auriez-vous constaté un tel comportement déjà ? est-il dû à la gestion des événements par windows et auriez vous une solution ou une piste ?
    Par avance merci

  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
    aurais tu un morceau de code ???
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  3. #3
    Membre régulier Avatar de dervish
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Points : 105
    Points
    105
    Par défaut
    salut,
    d'abord merci pour la réponse. je me disais bien que j'oubliai quelque chose...
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    function BoiteGlobale(){
        this.boite = document.body;
        this.fenetreCourante = 0;
        this.listeFenetre = [];
        this.alt = false;
        this.posXinit = 0;
        this.posYinit = 0;
        this.ZIndexMax = 0;
    	 this.setComportement();
    }
     
    BoiteGlobale.prototype = {
    	toucheAlt: 18,		// code touche Alt
     
        toucheCombin: 76,		// code touche l
     
    	setComportement: function() {
    		var courantSubstrat = this;
    		document.onkeydown = function(evt){
    			var touche = evt.keyCode;
    			if(touche == courantSubstrat.toucheAlt && !courantSubstrat.alt){
    				courantSubstrat.alt = true;
    				if(courantSubstrat.listeFenetre.length > 1) courantSubstrat.makeListe();
    	   	} else if(courantSubstrat.alt && touche != courantSubstrat.toucheAlt){
    				if(evt.keyCode == courantSubstrat.toucheCombin && courantSubstrat.listeFenetre.length > 1){
    					for(indexFenetre in courantSubstrat.listeFenetre){
    		   			if($(courantSubstrat.listeFenetre[indexFenetre]).style.zIndex == courantSubstrat.ZIndexMax){
    							var idFenetreActive = (1 + 1*indexFenetre < courantSubstrat.listeFenetre.length) ? 1 + 1*indexFenetre : 0;
    		        			courantSubstrat.setWindowFocus(courantSubstrat.listeFenetre[idFenetreActive]);
    		        			break;
    		    			};
    					};
    					courantSubstrat.makeListe();
    		  		};
    			};
    		};
    		document.onkeyup = function(evt){
       		var touche = evt.keyCode;
    	   	if(touche == courantSubstrat.toucheAlt){
    				courantSubstrat.alt = false;
    				if($('fenetresActives')) document.body.removeChild($('fenetresActives'));
    	   	};
    		};
    	},
     
    	makeListe: function(){
    		if($('fenetresActives')) document.body.removeChild($('fenetresActives'));
    			var cadreListeFenetre = document.createElement('div');
    			cadreListeFenetre.id = 'fenetresActives';
    			cadreListeFenetre.className = 'fenetresActives';
    			cadreListeFenetre.style.zIndex = 1+ 1*this.ZIndexMax;
    			var listeFen = document.createElement('ul');
    			for(indexFenetre in this.listeFenetre){
    	   		var fenTmp = document.createElement('li');
    	   		fenTmp.id = this.listeFenetre[indexFenetre];
    	   		fenTmp.innerHTML = $(this.listeFenetre[indexFenetre]).title;
    	   		fenTmp.className = ($(this.listeFenetre[indexFenetre]).style.zIndex == this.ZIndexMax) ? 'fenSelect' : 'fenDeSelect';
    	   		listeFen.appendChild(fenTmp);
    			};
    			listeFen.className = 'listeFenetre';
    			cadreListeFenetre.appendChild(listeFen);
    			cadreListeFenetre.onclick = function(){
    	   	document.body.removeChild(cadreListeFenetre);
    		};
    		document.body.appendChild(cadreListeFenetre);
       },
    }
     
    BoiteGlobale.prototype.constructor = BoiteGlobale;

  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
    Points : 4 835
    Points
    4 835
    Par défaut
    ok

    le problème est que tu capte tes évènements sur ta box et non sur la page , affecte tes events ( capture de touche ) sur document directement
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  5. #5
    Membre régulier Avatar de dervish
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Points : 105
    Points
    105
    Par défaut
    salut,
    En faite, ma boite est bien mappée sur le document.body et les fonctions onkeydown et onkeyup sont appelées sur document. Du reste, le onkeydown fonctionne bien pour la touche Alt et les autres. Mon seul soucis est que quand j'appuie en maintenant la touche alt et que je presse et relâche d'autre part une touche, le fait de relâcher la touche Alt n'est pas enregistré par le navigateur. Par contre, si j'appuie et que je relâche Alt sans presser et relâcher une autre touche, l'événement est bien enregistré...
    En plus, avec ff3 sous linux, ça fonctionne pilpoil.
    A moins que je n'ai pas saisis ta réponse.
    Je peux te mettre le lien pour que tu puisses constater de visu si tu le souhaites

Discussions similaires

  1. [Lazarus] Séquence d'événements des Form sous Windows
    Par ovni76 dans le forum Lazarus
    Réponses: 4
    Dernier message: 17/10/2012, 01h26
  2. Des Chmods sous Windows (incensé?)
    Par sloshy dans le forum Windows
    Réponses: 10
    Dernier message: 25/08/2005, 10h37
  3. Routines de gestion des ports sous Windows XP
    Par wiccanhelios dans le forum Windows
    Réponses: 2
    Dernier message: 14/11/2003, 09h02
  4. utilisation des sockets sous windows
    Par Tupac dans le forum Réseau
    Réponses: 2
    Dernier message: 21/12/2002, 19h24
  5. Détourner des IRQ sous Windows
    Par Blustuff dans le forum Assembleur
    Réponses: 15
    Dernier message: 06/12/2002, 11h16

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