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 - 在不指定元素的情况下模拟按键的主要内容,如果未能解决你的问题,请参考以下文章

模拟 - 测试是否在不指定参数的情况下调用方法

在不可见的网络浏览器对象 C# 中模拟按键

如何在不使用输入元素的情况下捕获 Vuejs 中的任何按键事件

Node.js JavaScript:在服务器上模拟按键(像宏一样)

C#模拟按键而不将鼠标移动到Forms Webbrowser

如何在不使用 android studio 的情况下下载 android 模拟器