我正在尝试使用JavaScript在Safari中模拟键盘事件.
我试过这个:
var event = document.createEvent("KeyboardEvent");
event.initKeyboardEvent("keypress", true, true, null, false, false, false, false, 115, 0);
Run Code Online (Sandbox Code Playgroud)
......还有这个:
var event = document.createEvent("UIEvents");
event.initUIEvent("keypress", true, true, window, 1);
event.keyCode = 115;
Run Code Online (Sandbox Code Playgroud)
但是,在尝试这两种方法之后,我遇到了同样的问题:在执行代码之后,事件对象的keyCode/ whichproperties设置为0,而不是115.
有谁知道如何在Safari中可靠地创建和发送键盘事件?(如果可能的话,我宁愿用纯JavaScript实现它.)
我正在寻找一种模拟键盘按键的方法(如标题建议).我环顾四周,主要找到了这两个问题:
这些问题是他们都使用KeyboardEvent.initKeyboardEvent()根据MDN不推荐使用的事件.没有弃用功能,有没有不同的方法来完成同样的事情?
我想知道这一点,因为我正在使用Chrome的TamperMonkey扩展程序为YouTube创建脚本.[space]按下时,此脚本将触发K. K是YouTube的切换播放/暂停按钮.我让[space]听众与下面的代码完美配合:
document.addEventListener("keydown", function(e) {
if(e.keyCode==32) {
e.preventDefault();
}
}, false);
Run Code Online (Sandbox Code Playgroud)
另外,我真的在寻找一种纯粹的JavaScript方法.
我正在尝试tab在 JavaScript 中触发键的按下。
场景: 2 个 HTML 输入元素。最初的焦点是第一个输入,然后等待 3 秒,然后模拟按下 Tab 键,这应该将焦点设置为第二个输入。
问题:调度tab keydown事件什么都不做。
小提琴:
我在寻找 JavaScript 解决方案。没有 jQuery 谢谢。
使用下面的 simulant.js 的小提琴示例:
HTML:
<input id="first">
<input id="second">
<p>Dispatching Tab keydown event in 3 seconds... <span id="done" style="color:red"></span></p>
Run Code Online (Sandbox Code Playgroud)
JavaScript:
//simulates keydown of the tab key
function simulateTab() {
var TAB_KEY = 9;
simulant.fire(document, 'keydown', { keyCode: TAB_KEY });
}
//focus 'first' input
document.getElementById('first').focus();
//focus 'second' …Run Code Online (Sandbox Code Playgroud)