javascript - 如何模拟适用于 JavaScript 中的字母数字和不可打印字符的跨浏览器按键?
问题描述
这是一个更具体的问题,是否可以以编程方式模拟按键事件?每个答案都以某种方式缺少以下信息,从而降低了问题的价值。我已经在那里尝试了三件在现代浏览器中不起作用的东西,或者官方消息人士建议不要这样做。
这是我正在寻找的内容:
- 在回答时,每个示例都应该适用于现代版本的 Firefox和Chrome。
- 没有示例包括已弃用的对象、字段、属性或函数。
每个答案都应包括在文本字段和文本区域中键入可打印字符的方法。正如下面的评论中提到的,这是无法做到的。- 每个答案都应该包括一种在输入没有焦点时键入字母数字字符的方法。例如,“a”、“b”、“c”等。
- 每个答案都应该包括一种输入不可打印字符的方法。例如,向下翻页、向左箭头、F1 键(如果不可能,可以这样声明)、Enter 等。
- 每个答案都应该包含一个链接,指向模拟字母数字字符和不可打印字符所需的所有“代码”,或者更好的是,将该信息嵌入到答案中。我在这里松散地使用术语“代码”:我的意思是任何适合满足第二点的术语。
解决方案
该解决方案满足所有标准:
- 此示例适用于现代版本的 chrome 和 firefox ( https://caniuse.com/dispatchevent ) ( https://caniuse.com/keyboardevent-key )
- 此示例不包含任何已弃用的内容
- 不适用
- 支持字母数字字符
- 使用此解决方案可以做到这一点
- 您可以设置
key
等于这些值之一https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values(我会嵌入这个,但是,有很多代码)
- Ctrl:使用
ctrlKey
选项(布尔值) - Alt:使用
altKey
选项(布尔值) - Shift:使用
shiftKey
选项(布尔值) - 元键/命令键:使用
metaKey
选项(布尔值)
function simulateKeypress(target, options) {
target.dispatchEvent(new KeyboardEvent('keydown', options));
}
document.addEventListener("keydown", event => {
console.log(event.key);
});
setTimeout(() => {
simulateKeypress(document, {
key: "F1"
});
}, 1000);
推荐阅读
- django - 在表单传递的表单集中插入数据
- javascript - 有没有办法创建一个特定的 SmileyFace 实例,并将其名称作为参数传递给 drawSmiley()
- java - Spring Boot - Jasper 报告图表 -> 不支持的 major.minor 版本 52.0
- excel - Excel VBA自动创建有条件的序列号
- reactjs - 配置 React.js 路由以运行 next.js
- ruby-on-rails - S3保存旧网址,更改回形针配置,将新网址设置为旧网址
- c# - 使用 ADO.NET 读取数据时如何映射外键对象?
- javascript - 如何匹配标签和对象?
- android - 此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 8.0 不兼容
- php - 在 show() 方法中检查请求记录是否存在