私は、ディスパッチされたイベントオブジェクトにkeyCodeを設定しようとしています。ChromeのKeyboardEvent、keyCodeは0です
ボタンをクリックすると、テキストボックスコントロール上でイベントがシミュレートされたキーダウンイベントに表示されます。イベントは正常に発生しましたが、keyCodeは0です。正しいkeyCodeでイベントオブジェクトをテキストボックスに送信する必要があります。 私はhereのコードを使用しています。
ディスパッチイベントでkeyCode値を設定するにはどうすればよいですか?
<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>
これには非常に巧妙な回避策があります。http://stackoverflow.com/questions/10455626/keydown-simulation-in-chrome-fires-normally-but-not-the-correct-key/10520017#10520017必要なプロパティを設定し、キーアップ/ダウンイベントを送信することができます。サンプルコードが含まれています。 – Orwellophile