Estoy tratando de establecer keyCode en el objeto de evento enviado.KeyboardEvent en Chrome, keyCode es 0
Al hacer clic en un botón, se produce un evento en el control de cuadro de texto para simular un evento de tecla. El evento se genera con éxito, pero el código de clave es 0. Necesito enviar el objeto de evento con el código de clave correcto al cuadro de texto. He estado usando el código de here.
¿Cómo se establece el valor del código clave en el evento enviado?
<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>
Hay una solución muy inteligente para esto, consulte: http://stackoverflow.com/questions/10455626/keydown-simulation-in-chrome-fires-normally-but-not-the-correct-key/10520017 # 10520017 Esto le permitirá establecer las propiedades que necesita y enviar un evento de tecla arriba/abajo. Código de muestra incluido. – Orwellophile