我想在分派的事件對象上設置keyCode。Chrome中的KeyboardEvent,keyCode爲0
單擊按鈕時,在文本框控件上引發事件以模擬keydown事件。事件成功提升,但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這將允許你設置你需要的屬性,併發送一個keyup/down事件。包含示例代碼。 – Orwellophile