keyboardevent example event javascript google-chrome keyboard-events keydown

example - keypress javascript



KeyboardEvent en Chrome, keyCode es 0 (5)

Estoy tratando de establecer keyCode en objeto de evento distribuido.

Al hacer clic en el botón, el evento se levanta en el control de cuadro de texto para simular el evento keydown. El evento se generó con éxito, pero el código de clave es 0. Necesito enviar el objeto del evento con el código de clave correcto al cuadro de texto. He estado usando el código de here .

¿Cómo establecer el valor de KeyCode en el evento despachado?

<html> <head> </head> <body> <input type="button" id="btn" value="Click"></input> <input type="text" id="txt"></input> <script> document.getElementById(''btn'').addEventListener("click", btnClick); document.getElementById(''txt'').addEventListener("keydown", txtKeydown); function btnClick(e) { var txt = document.getElementById(''txt''); var dispatchKeyboardEvent = function(target, initKeyboradEvent_args) { var e = document.createEvent("KeyboardEvents"); e.initKeyboardEvent.apply(e, Array.prototype.slice.call(arguments, 1)); e.keyCode = 83; e.charCode = 0; target.dispatchEvent(e); }; var canceled = !dispatchKeyboardEvent(txt, ''keydown'', true, true, // type, bubbles, cancelable window, // window ''s'', // key 0, // location: 0=standard, 1=left, 2=right, 3=numpad, 4=mobile, 5=joystick false, false, false); // Ctr, Alt, Shift } function txtKeydown(e) { console.dir(e); console.log(e.keyCode); } </script> </body> </html>


Me he enfrentado al mismo problema con dispositivos Android como Sony Xperia y HTC. Así que encontré una solución alternativa: consulte mi respuesta para esta pregunta KeyCode Devoluciones 0 Siempre


Me sorprende que este bicho haya estado allí por mucho tiempo. Parece que hay una solución utilizando eventos genéricos. Aquí hay una demostración: http://jsbin.com/awenaq/3


No es un error ... esta función está siendo eliminada, desaprobada, prohibida, cual será su nombre mañana ... No puede confiar en que esta función funcione por mucho tiempo. ... y es un riesgo de seguridad abierto ... encuentra otra forma de hacer lo que estás tratando de hacer. Consulte las especificaciones de MOZILLA y verá la BAND BAND BIG BAD BAD que advierte para evitar esto como la plaga. No lo arreglarán, devolviendo 0, detienen el sangrado de manera efectiva sin cambiar el código, excepto en un lugar donde siempre coloca el código de clave en 0.


Parece que ha pasado un poco desde que preguntaste esto, por lo que es posible que ya hayas encontrado la respuesta a tu pregunta. En caso de que no lo hayas hecho, hay un error en Webkit como se señaló en esta pregunta SO que hace que el código de clave siempre sea 0. Al parecer, no hay mucho que puedas hacer hasta que lo solucionen. Lamentablemente, no parece que alguien esté realmente trabajando en eso. No es la respuesta que quieres escuchar, pero en realidad es la única respuesta que alguien puede darte por esto ahora mismo.


Si tienes jQuery:

$.Event(event, { keyCode: 13 });

Este es el uso previsto.
Source