我正在尝试模拟 Chrome 53 上的关键事件(按)。 我在StackOverflow上找到的所有解决方案似乎都不起作用..
我的目标是拥有一个获得keyCode
并使用它来模拟按键的功能 - 需要纯JS
function keyPressSimulate(keyCode) {...?}
我已尝试的代码示例:
Node.prototype.fire=function(type,options){
var event=new CustomEvent(type);
for(var p in options){
event[p]=options[p];
}
this.dispatchEvent(event);
}
document.fire("keyup",{ctrlKey:true,keyCode:90,bubbles:true})
另一个:
presskey: function(k) {
var e = new Event("keydown");
e.keyCode= k;
e.which=e.keyCode;
e.altKey=false;
e.ctrlKey=true;
e.shiftKey=false;
e.metaKey=false;
document.dispatchEvent(e);
}
和
var e = new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", shiftKey : true});
global.document.dispatchEvent(e);
和
presskey: function(k) {
var keyboardEvent = document.createEvent("KeyboardEvent");
var initMethod = typeof keyboardEvent.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent";
keyboardEvent[initMethod](
"keydown",
true, // bubbles oOooOOo0
true, // cancelable
window, // view
false, // ctrlKeyArg
false, // altKeyArg
false, // shiftKeyArg
false, // metaKeyArg
k,
0 // charCode
);
global.document.activeElement.dispatchEvent(keyboardEvent);
}
答案 0 :(得分:1)
{@ 1}}属性已弃用,使用专用keyCode
但是,您可以使用自定义事件并将您想要的任何属性设置为2步操作(如果在构造函数中使用它将被忽略):
KeyboardEvent
根据评论进行修改 从针对文档中特定元素的用户交互触发事件。
例如,用户按键盘上的键是一系列事件(keydown,keyup,keypress)。其中一些被浏览器捕获以填充输入字段的值,然后它们作为事件传输到Javascript。除了手动执行操作之外,没有可行的方法来模拟用户从Javascript沙箱中命中密钥(1)检测焦点位置,(2)根据默认浏览器行为更新焦点元素的属性,以及然后(3)触发目标元素上的相应事件。