Envoyé par : Kaze
Date : 29/06/2006 17:18
Bonjour,
dans le cadre de mes extensions pour Nvu, je voudrais désactiver certaines commandes clavier, notamment :
J'ai essayé pas mal de trucs plus ou moins malins dans les pages XUL, du genre :
<keyset> <key keycode="VK_RETURN" oncommand="..."/> </keyset>
ou
<keyset> <key keycode="VK_TAB" modifiers="control" oncommand="..."/> <key keycode="VK_TAB" modifiers="control,shift" oncommand="..."/> </keyset>
mais rien n'y fait : le code passé dans l'attribut "oncommand" est exécuté en plus des actions "de base" (validation du dialogue / changement d'onglet).
Y a-t'il un moyen pour "piéger" ces raccourcis clavier ?
Merci d'avance !
Envoyé par : papy
Date : 29/06/2006 17:31
A mon avis tu es sur la bonne voie, tu dois traiter les évènements toi même avec un corps vide (ou autre chose), mais il faut surtout empêcher l'évènement de continuer à se propager et de déclencher les actions par défaut. Regarde la référence de l'objet event, les méthode preventDefault et stopPropagation te seront sans doute utiles. A voir aussi pendant quelle phase tu peux bloquer cette propagation, cf le tutoriel principale sur ce site (http://xulfr.org/xulplanet/xultu/adveven(..)) ou sur xulplanet.
Envoyé par : Kaze
Date : 29/06/2006 18:12
Merci pour cette réponse. Effectivement, j'ai pu piéger les raccourcis clavier pour changer d'onglet avec trois lignes de code :
window.addEventListener("keypress", noTabSwitching, true); function noTabSwitching(event) { if (event.ctrlKey) if (event.keyCode == KeyEvent.DOM_VK_TAB || event.keyCode == KeyEvent.DOM_VK_PAGE_UP || event.keyCode == KeyEvent.DOM_VK_PAGE_DOWN) event.stopPropagation(); }
Nickel-chrome ! J'ai pas encore bien compris l'usage de preventDefault mais je vais regarder ça.
Merci encore.
Envoyé par : thefab
Date : 29/06/2006 20:03
l'usage de preventDefault
stopPropagation() sert à supprimer le passage de l'évènement aux éléments parents alors que preventDefault sert à supprimer l'action associée à l'élément en cours. Exemple avec <p><a href="..."></a></p> stopPropagation() sur le lien va empêcher le paragraphe de recevoir l'évènement click mais va ouvrir le lien, alors qu'avec preventDefault() le lien ne devrait être ouvert.
Je ne suis pas du tout sur de ce que je viens de dire (de mémoire) à tester, donc...
Fabrice
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.