Bonjour,

Je crée actuellement un petit bout de code qui est censé redéfinir des raccourcis clavier.
J'ai notamment une page où quand je fais ctrl + m, cela m'activer un bouton "modification", quand je fais ctrl + n, j'active un autre bouton, etc ...

Tout fonctionne très bien. Exemple, j'ai une action sur ctrl + F, firefox ne m'ouvre pas la recherche et réalise bien l'action que je demande derrière.

Cependant j'ai remarqué une anomalie. C'est que dès que cette action réalise une ouverture de fenêtre (open popup, ou une simple fenêtre "alert" ou "confirm") mon action est exécuté mais aussi celle par défaut du navigateur (seulement sous firefox) !

Exemple : ctrl + S est censé m'activer une action de suppression, ce qu'il fait bien, mais avant cela j'affiche une alert pour confirmer la suppression, et à cause de cette alert, la fenêtre de "sauvegarder sous..." s'ouvre également !!

Si j'enlève cette alert, aucun problème ! Et sous IE le code fonctionne correctement.

Voici mon code qui bloque et capture les touches :

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
<SCRIPT language=javascript>
	function __getKeyCode(e){
    	var intKey = 0;
    	if (e.keyCode) {
	        intKey = e.keyCode;
	    }
    	else {
        	if (e.which) {
	            intKey = e.which;
        	}
    	}
    	return intKey;
	}
 
	function stopEvent(e) {
	    if (e.preventDefault) {
	        e.preventDefault();
	        e.stopPropagation();
	    }
	    else {
	        e.returnValue = false;
	        e.cancelBubble = true;
	        e.keyCode = 0;
	    }
	    return false;
	}
 
	function ControlKeyDown(e) {
		if (!e) {
     	   var e = window.event;
    	}
    	var iTouche = __getKeyCode(e);
 
    	if (((iTouche >= 65 && iTouche <= 90) || (iTouche >= 97 && iTouche <= 122)) && e.ctrlKey) {
        	stopEvent(e);
        	alert('coucou !!');
    	}
	}
 
	document.onkeydown = ControlKeyDown;
</SCRIPT>
Ce comportement est il normal ? ai je fait une erreur dans mon code ? Merci beaucoup d'avance !