Envoyé par : aurelien
Date : 13/07/2005 11:26
Bonjour,
J'avance dans mon extension capturant les copier/coller, j'arrive à capturer les copier, couper et coller depuis les différents menus.
Mais j'ai toujours des problèmes avec les raccourcis claviers. J'ai rajouté le code suivant pour les capturer :
<keyset id="mainKeyset"> <key id="key_copy" key="©Cmd.key;" modifiers="accel" accesskey="©Cmd.key;" oncommand="dump('key_copy\n');goDoCommand('cmd_copy');handleCopy();"/> <key id="key_cut" key="&cutCmd.key;" modifiers="accel" accesskey="&cutCmd.key;" oncommand="dump('key_cut\n');goDoCommand('cmd_cut');handleCut();"/> <key id="key_paste" key="&pasteCmd.key;" modifiers="accel" accesskey="&pasteCmd.key;" oncommand="dump('key_paste\n');handlePaste();goDoCommand('cmd_paste');"/> </keyset>
Je capture alors bien les copier/coller sauf quand le focus est sur une zone d'édition input
ou textarea
. Cependant les copier et coller marchent quand même, mais sans utiliser le code que j'ai redéfini.
Quand le focus est ailleurs les raccourcis marchent bien et mes dumps s'affichent.
C'est embetant vu que c'est dans les zones d'édition qu'on fait du coller.
Est ce que quelqu'un aurait une idée du pourquoi. Évènement mangé par Firefox ? Oubli d'un attribut ? Nécessité de mettre un observer quelque part ?
J'ai décortiqué quelques extensions mais je n'en ai pas trouvé qui redéfinisse le comportement d'une fonctionnalité en ne rajoutant une nouvelle entrée dans les menus (si vous en avez une à me conseiller je suis preneur).
Envoyé par : chBok
Date : 14/07/2005 19:56
Nativement, des fonctions pour le copier/coller sont déjà attribuées aux champs de saisie (ce qui est parfaitement normal). Si tu veux les remplacer par des fonctions propres à ton code, il te faudrait créer un overlay. Il faudrait aussi tester lors de la la capture de l'évènement onmouseup l'utilisation d'un stopPropagation
Envoyé par : aurelien
Date : 15/07/2005 16:26
Merci de m'avoir répondu, je ne suis pas sur de bien de suivre, je précise donc mon idée :
Nativement, des fonctions pour le copier/coller sont déjà attribuées aux champs de saisie (ce qui est parfaitement normal).
Tu me dis que les champs de saisie on des fonctions de copier/coller propres et ne font pas appel aux commandes "classiques"? Ça me parait bizarre vu que quand je fais un copier depuis le menu il fonctionne bien comme je veux (c'est seulement le raccourci dans un champ de saisie marche mais sans utiliser ma redéfinission). J'ai bien essayé de redéfinir des handlers
<bindings id="htmlBindings"> <!-- Cut/copy/paste --> <binding id="inputFields"> <handlers> <handler event="keypress" key="c" modifiers="accel" action="dump('handler accel c\n');"/> <handler event="keypress" key="x" modifiers="accel" action="dump('handler accel x\n');"/> <handler event="keypress" key="v" modifiers="accel" action="dump('handler accel v\n');"/> </handlers> </binding> </bindings>
Mais ça ne change rien (vu qu'il n'ont pas d'id
je ne crois pas qu'il soit possible de les redéfinir).
Si tu veux les remplacer par des fonctions propres à ton code, il te faudrait créer un overlay.
En fait je veux pas les remplacer mais juste ajouter un traitement (en l'occurence enregister les copier et les coller).
Voici mon overlay :
<overlay id="copylinker" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <!-- importation des javascripts.--> <keyset id="mainKeyset"> <key id="key_copy" key="©Cmd.key;" modifiers="accel" accesskey="©Cmd.key;" oncommand="dump('key_copy\n');goDoCommand('cmd_copy');handleCopy();"/> <key id="key_cut" key="&cutCmd.key;" modifiers="accel" accesskey="&cutCmd.key;" oncommand="dump('key_cut\n');goDoCommand('cmd_cut');handleCut();"/> <key id="key_paste" key="&pasteCmd.key;" modifiers="accel" accesskey="&pasteCmd.key;" oncommand="dump('key_paste\n');handlePaste();goDoCommand('cmd_paste');"/> </keyset> <commandset id="mainCommandSet"> <command id="cmd_copy" oncommand="dump('cmd_copy\n');goDoCommand('cmd_copy');handleCopy();"/> <command id="cmd_cut" oncommand="dump('cmd_cut\n');goDoCommand('cmd_cut');handleCut();"/> <command id="cmd_paste" oncommand="dump('cmd_paste\n');handlePaste();goDoCommand('cmd_paste');"/> </commandset> <!-- des templates qui affichent des rdf à differents endroits de l'interface --> </overlay>
Il faudrait aussi tester lors de la la capture de l'évènement onmouseup l'utilisation d'un stopPropagation
Ce que je ne comprends, c'est quel est le code qui est exécuté lorsque je fais ctrl-c ou ctrl-v dans un textinput. Si je le savais je pourrais effectivement voir s'il n'y a pas un stopPropagation.
NB si vous voulez essayer l'extension elle est la, le developpement n'est pas encore finit, elle peut provoquer des lenteurs au copier coller : http://www.iad-pro.infop6.jussieu.fr/~iad22/rabidfox_0.2.xpi
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.