teclado que eventos ejemplo javascript javascript-events google-chrome gmail google-chrome-extension

javascript - que - Gmail parece capturar todos los eventos de teclado. ¿Alguna forma de sortear eso?



onkeyup jquery (3)

Podría intentar un proceso de redirección:

if (document.body.onkeypress) { // add as event listener instead var kpfunc = document.body.onkeypress; document.body.addEventListener(''keypress'', kpfunc, true); }

Estoy escribiendo una extensión de Chrome que inicia un script con un atajo de teclado. Funciona bien en la mayoría de las páginas, pero me di cuenta de que en Gmail no: parece que todos los eventos de teclado son capturados por Gmail y no se borran a mi función.

Tengo un script de contenido (en la extensión de Chrome esto se agrega a cualquier página que desee) que tiene (simplificado por supuesto):

document.body.addEventListener(''keypress'', myFunction, true); function myFunction(event) { console.log("yay, Gmail didn''t let me down!"); }

Pero en realidad, Gmail me defrauda. Sé que el script está cargado. Intenté diferentes variaciones de window.addEventListener y otros tipos de eventos en vano.

¿Alguien sabe de una manera de eludir esto? Traté de ver si el script de GreaseMonkey podía hacerlo, eso me trajo aquí: http://code.google.com/p/gmail-greasemonkey/ pero eso no me ayudó.

¡Gracias!


No conozco el funcionamiento interno de la captura de eventos de teclado de GMail, pero recientemente escribí un simple navegador de atajos de teclado (para no tener que usar el mouse para hacer clic en los enlaces) para Chrome.

No es una extensión, sino un script de usuario / Greasemonkey, pero se activa al escribir comas (,) dos veces, y funciona en GMail.

Tal vez te ayude a mirar la fuente. Puede descargarlo aquí: http://userscripts.org/scripts/show/68609


De acuerdo, tengo una solución de trabajo, ingeniería inversa del plugin onePassword. Solo puedo adivinar por qué funciona esto, supongo que es por agregar el evento a los elementos de entrada. Sin embargo, cambia cualquier cosa y deja de funcionar (la llamada a redir en la parte inferior está en la parte inferior por algún motivo)

function redir(e) { e.focus(); var h = document.createEvent("KeyboardEvent"); h.initKeyboardEvent(''keydown'', true, true); e.dispatchEvent(h) } $("input").each(function(t,l) {redir(l)}); document.addEventListener(''keydown'', function(e) { if (e.ctrlKey && e.keyCode) { if (e.keyCode == 190) { chrome.extension.sendRequest({name: "spot-openPopUp"}); } } },false); redir(document.body);

Como pueden ver, utilicé la redirección. Este ejemplo es muy crudo por cierto, así que no lo uses