10
votes

Gmail semble capturer tous les événements du clavier. Toute façon de faire le tour de ça?

J'écris une extension chromée qui lance un script avec un raccourci clavier. Cela fonctionne bien sur la plupart des pages, mais je me suis rendu compte que sur gmail, il semble que tous les événements de clavier soient capturés par Gmail et ne sont pas passés à ma fonction.

J'ai un script de contenu (en extension chromée c'est Ajouté à n'importe quelle page que vous voulez) qui a (simplifié bien sûr): xxx

mais en fait, gmail me laisse tomber. Je sais que le script est chargé . J'ai essayé différentes variations de window.addeventlistener et d'autres types d'événements en vain.

Quelqu'un peut-il savoir un moyen de contourner cela? J'ai essayé de voir si le script de Greasemonkey pourrait le faire, cela m'a amené ici: http: // code .google.com / p / gmail-greasemonkey / Mais cela ne m'a pas aidé.


2 commentaires

Vous pouvez demander à tous vos utilisateurs de désactiver les raccourcis clavier dans leurs paramètres Gmail. Mais ils pourraient ne pas aimer ça. Et je ne suis pas sûr que si cela fonctionnerait de toute façon.


Non ce n'est pas vraiment réalisable. Mon extension ne fait pas beaucoup honnêtement, je ne peux donc imaginer personne qui prend ce compromis. En outre, je suis le seul utilisateur en ce moment, donc je ne voudrais pas que :)


3 Réponses :


0
votes

Vous pouvez essayer un processus de redirection: xxx


1 commentaires

document.body.onkeypress renvoie NULL cependant. Quelle différence les deux méthodes font-elles? En tout doute, j'ai essayé de faire document.body.onkeypress = fonction () {alerte ("sdf ');} ainsi que window.onkeypress sans meilleurs résultats.



1
votes

Je ne connais pas le fonctionnement intérieur de la capture d'événements de clavier de Gmail, mais j'ai récemment écrit un simple navigateur de raccourci clavier (donc je n'ai pas à utiliser la souris pour cliquer sur Liens) pour Chrome.

Ce n'est pas une extension, mais un script utilisateur / greasemonkey, mais il est déclenché en tapant une virgule (,) deux fois, et cela fonctionne dans Gmail.

Peut-être que cela vous aidera à regarder la source. Vous pouvez le télécharger ici: http://userscripts.org/scripts/show/68609 < / p>


4 commentaires

Merci, je vais regarder et essayer d'arriver à ce dont j'ai besoin. Je vais mettre à jour si je le fais.


Ok, je l'ai compris. Il s'avère que cela n'était pas vraiment lié à Gmail capturant l'événement et de la garder pour elle-même: il existe un paramétrage des extensions de chrome qui rend le script correspondant à tous les cadres ou juste le haut. Il est par défaut qu'au sommet supérieur et Gmail utilise des iframes. Donc, mon script n'a pas été chargé là où il fallait. ( code.google.com/chrome/extensions/content_scripts.html ) Merci Pour l'exemple de travail, cela m'a aidé à creuser davantage.


Je rencontre exactement le même problème, mais que la mise en place de Allframes à True ne m'a toujours pas permis de capturer des événements de clavier dans Gmail. Spécifiquement lors de la composition d'un courrier électronique et de taper dans le corps. Pouvez-vous vérifier que vous avez ce comportement?


Pour une raison quelconque, mon script ne fonctionne plus du tout sur Gmail. Gmail est l'un des sites d'où je ne me déconnecte jamais, alors je ne sais pas quand cela a commencé ...



1
votes

D'accord, j'ai une solution de travail, inverse ingénieur du plugin OnePassword. Je ne peux que deviner pourquoi cela fonctionne, je pouvais savoir qu'il est dû à l'ajout de l'événement aux éléments d'entrée. Cependant, changez quoi que ce soit et cela cesse de fonctionner (l'appel de Redir sur le bas est en bas pour une raison pour une raison) xxx

comme vous pouvez le voir, j'ai utilisé une redirection. Cet exemple est vraiment brut btw alors ne l'utilisez pas simplement


2 commentaires

Vous pourriez avoir un coup d'œil à ce que j'ai fini par faire: Github. COM / TIMOTHEE / LOGMEOUTTHX / BLOB / MASTER / CHROME% 20EXTENDENSI ON / ... (Remarque: cela fonctionne toujours en cours ;-)) Je n'avais pas besoin de faire de la redirection. La principale chose qui manquait pour moi était dans le manifeste: Github .COM / TIMOTHEE / LOGMEOUTTHX / BLOB / MASTER / CHROME% 20EXTENDENSI ON / ... ET AJOUTER "ALL_FRAMES": true


J'ai oublié de mentionner, j'ai aussi dû ajouter all_frames. Merci pour les liens