使用 `which` 以编程方式触发 keydown 事件 属性
Programatically trigger keydown event with `which` property
如何以编程方式触发 Chrome 上的 keydown 事件,将 which
属性 设置为所需的值?
尝试过
new KeyboardEvent('keydown', {
'which':65,
'charCode':65,
'keyCode':65,
'key':"a",
'code':"KeyA",
});
但是当在输入的 onKeyDown
处理程序中接收到 属性 时,事件 which,charCode and keyCode
等于 0
。 key
正确设置为 a
。
在 Chrome 中,这些事件属性的默认值为 0
并且不可写(由于它们已被弃用)。您必须删除本机属性,然后重新创建它们:
var ke = new KeyboardEvent('keydown', {
'key':"a",
'code':"KeyA",
});
// Delete native event read-only properties with default values of 0
delete ke.keyCode;
delete ke.charCode;
delete ke.which;
// Create new custom properties that are read/write:
Object.defineProperty(ke, "keyCode", {"value" : 65});
Object.defineProperty(ke, "charCode", {"value" : 65});
Object.defineProperty(ke, "which", {"value" : 65});
var el = document.getElementById("key");
el.addEventListener("keydown", function(evt){
console.log(evt.key, evt.code, evt.keyCode, evt.charCode, evt.which);
});
el.dispatchEvent(ke);
<input type="text" id="key">
如何以编程方式触发 Chrome 上的 keydown 事件,将 which
属性 设置为所需的值?
尝试过
new KeyboardEvent('keydown', {
'which':65,
'charCode':65,
'keyCode':65,
'key':"a",
'code':"KeyA",
});
但是当在输入的 onKeyDown
处理程序中接收到 属性 时,事件 which,charCode and keyCode
等于 0
。 key
正确设置为 a
。
在 Chrome 中,这些事件属性的默认值为 0
并且不可写(由于它们已被弃用)。您必须删除本机属性,然后重新创建它们:
var ke = new KeyboardEvent('keydown', {
'key':"a",
'code':"KeyA",
});
// Delete native event read-only properties with default values of 0
delete ke.keyCode;
delete ke.charCode;
delete ke.which;
// Create new custom properties that are read/write:
Object.defineProperty(ke, "keyCode", {"value" : 65});
Object.defineProperty(ke, "charCode", {"value" : 65});
Object.defineProperty(ke, "which", {"value" : 65});
var el = document.getElementById("key");
el.addEventListener("keydown", function(evt){
console.log(evt.key, evt.code, evt.keyCode, evt.charCode, evt.which);
});
el.dispatchEvent(ke);
<input type="text" id="key">