js - 在不指定元素的情况下模拟按键
Posted
技术标签:
【中文标题】js - 在不指定元素的情况下模拟按键【英文标题】:js - simulate key press without specifying an element 【发布时间】:2018-11-19 10:43:26 【问题描述】:我想在 js 中模拟按键。最好不指定任何元素。
我想这样做的方法是在输入上使用 .focus(),然后模拟像字符“a”这样的按键。
如果我自己按下键会发生同样的事情。
通过互联网搜索我没有找到解决方案。它可能与模拟事件和输入字段的组合有关。有时我可以捕捉到事件,但输入字段中没有输入。
非常感谢您的任何帮助。
编辑 1: 这不应被视为重复:Is it possible to simulate key press events programmatically?
因为这并不能解决我的问题。我已经试过了。
编辑 2: 请不要因为您不知道如何回答这个问题而对这个问题投反对票。
【问题讨论】:
Is it possible to simulate key press events programmatically?的可能重复 如果可能的重复不能解决您的任何一个问题,请详细说明有什么不同,为什么它不能解决您的问题以及您面临的具体错误是什么(考虑创建一个最小的示例在 plnkr/jsfiddle 或类似文件中) 【参考方案1】:如果你有或可以包含 jQuery,这里是简单的方法
使用 jQuery
jQuery.event.trigger( type: 'keydown', which: 78 ); // press n key
要模拟输入字段中的按键事件,请像这样使用
var e = jQuery.Event("keydown");
e.which = 78; // n code value
e.altKey = true; // Alt key pressed
$("#inputBox").trigger(e);
没有 jQuery
var kbEvent= document.createEvent("KeyboardEvent");
var initMethod = typeof kbEvent.initKeyboardEvent !== 'undefined' ? "initKeyboardEvent" : "initKeyEvent";
kbEvent[initMethod](
"keydown", // event type : keydown, keyup, keypress
true, // bubbles
true, // cancelable
window, // viewArg: should be window
false, // ctrlKeyArg
false, // altKeyArg
false, // shiftKeyArg
false, // metaKeyArg
78, // keyCodeArg : unsigned long the virtual key code , else 0
0 // charCodeArgs : unsigned long the Unicode character associated with the depressed key, else 0
);
document.dispatchEvent(kbEvent);
上面的代码实际上不会为你修改输入值,它只会模拟击键
查看这篇文章了解更多信息 How to simulate typing in input field using jQuery?
你需要的是:fn.sendKeys
【讨论】:
我已经多次看到这段代码,但它不起作用。我的输入字段中没有任何内容。 您可能正在寻找this以上是关于js - 在不指定元素的情况下模拟按键的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用输入元素的情况下捕获 Vuejs 中的任何按键事件
Node.js JavaScript:在服务器上模拟按键(像宏一样)