2011-05-23 5 views
5

Creé una extensión de navegador que amplía twitter.com. Abre una ventana modal jQuery UI y tiene algunas entradas de texto. Cuando escribo esas entradas, funciona, a excepción de las teclas J y K. Esas claves son parte de algún evento personalizado de Twitter (desplazarse entre tweets). Puedo obtener todas las claves para escribir la letra en el cuadro, excepto esos dos.eliminar eventos clave J y K en twitter.com

Quiero saber cómo desvincular las cosas keypress para esas dos claves para que pueda obtener esas dos letras para el tipo. ¿Alguna idea sobre cómo desvincularlos? He intentado captar el evento y evitar que aparezca el predeterminado ... no ayudó. Lo atrapé y devolví verdadero/falso, tampoco ayuda. Por favor hagamelo saber.

+1

Echa un vistazo a 'phoenix.bundle.js', parece que hace el enlace del que hablas. Tal vez descubra qué funciones es vinculante y sobrescribirlas o hacer referencia a ellas para separar los desencadenantes. –

Respuesta

1

me encontré con el mismo problema con las áreas de texto y campos de entrada en Twitter.com cuando construí una extensión de navegador para mejorar la página. Pude hacer que todo funcionara como esperaba al apuntar a la entrada específica y las áreas de texto creadas por mi extensión y luego detener la propagación del evento de pulsación de teclas.

$("selector-for-inputs-created-by-extension") 
    .bind("keypress", function(e) { 
     e.stopPropagation(); 
    }); 

Espero que ayude a aclarar las cosas.

3

Twitter parece usar jQuery para el enlace de eventos. Desde la consola de JavaScript, podemos inspeccionar estos eventos:

$(document).data('events').keydown; 
$(document).data('events').keypress; 
$(document).data('events').keyup; 

A través de ensayo y error básico, podemos reducir nuestro alcance para el evento de pulsación de tecla mediante la eliminación de estos eventos y ensayos para determinar la funcionalidad que falta.

// Results in j/k keys no longer moving up/down 
$(document).data('events').keypress = []; 

Esto, por supuesto, es una especie de enfoque de hack-and-slash, pero útil para reducir las cosas.

+0

ASÍ QUE esta matriz de pulsación de tecla tiene tres eventos. Establecer cualquiera de ellos para null corrige la página. – frosty

+0

@aaronfrost Me imagino que no todos los tres están involucrados en este comportamiento, pero al configurar uno para nulo está creando una excepción en el código de manejo de eventos que resulta en que la mayoría/todos ellos no disparan (y por lo tanto el de interés no disparo) – Matt

4

Esto suena muy similar a un problema que tuve donde google alteraría las teclas de flecha hacia arriba y hacia abajo. Here is where Lo resolvé en SO después de un poco de ayuda. Básicamente Dejé el evento al igual que (para mí es de arriba a abajo, encuentro los códigos de tecla para su J y K):

if (event.keyCode == 40 || event.keyCode == 38) { 
    event.cancelBubble = true; 
    event.stopPropagation();    
    return false; 
} 
Cuestiones relacionadas