我正在尝试使用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实现它.)
注意:这里和其他地方都存在现有问题,但它们都是特定于 jQuery 的,并且没有涵盖纯 JavaScript 的规范答案,包括对 Web 组件的支持。
我想模拟按 Tab 键,以便焦点转移到 Tab 键顺序中的下一个元素。下一个元素可以是任何 HTML 可聚焦的 HTML 元素或带有tabindex="0". 这也需要在某些后代 HTML 元素可能是具有影子 DOM 的自定义 Web 组件的情况下起作用。
潜在的解决方案可能是触发按键事件或迭代后代节点以寻找可聚焦的节点。
我们使用此代码Tab用Enter密钥模拟密钥:
function EnterTab() {
if (event.keyCode == 13) event.keyCode = 9;
return false;
}
Run Code Online (Sandbox Code Playgroud)
但在IE 11中keyCode只读取此代码不起作用.如何解决我的代码在IE 11中运行的问题?
javascript ×3
dom-events ×1
focusable ×1
jquery ×1
safari ×1
shadow-dom ×1
tabindex ×1
webkit ×1