使用 JavaScript 在 Safari 中创建键盘事件
使用 JavaScript 在 Safari 中模拟键盘事件可能具有挑战性,正如您尝试使用文档所证明的那样.createEvent。该问题源于 keyCode 属性的不一致行为,尽管您努力将其设置为 115,但它仍被初始化为 0。
要解决此问题,我们建议使用 DOM 键盘事件级别 3 填充,它增强了 JavaScript 的事件模型,以支持现代浏览器并为旧属性提供向后兼容性。
使用此polyfill,您可以创建键盘事件,如下所示:
element.addEventListener("keydown", function(e){ console.log(e.key, e.char, e.keyCode) }) var e = new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : "Q", char : "Q", shiftKey : true}); element.dispatchEvent(e); //If you need legacy property "keyCode" // Note: In some browsers you can't overwrite "keyCode" property. (At least in Safari) delete e.keyCode; Object.defineProperty(e, "keyCode", {"value" : 666})
polyfill 支持旧属性,如 keyCode、charCode ,并且允许您直接指定这些属性:
var e = new KeyboardEvent("keydown", { bubbles : true, cancelable : true, char : "Q", key : "q", shiftKey : true, keyCode : 81 });
此外,您可以在单独的要点中找到 initKeyboardEvent 的跨浏览器版本。
通过利用这些技术,您可以可以在 Safari 中可靠地创建和调度键盘事件,确保不同浏览器之间的行为一致。
以上是如何使用 JavaScript 在 Safari 中可靠地创建键盘事件?的详细内容。更多信息请关注PHP中文网其他相关文章!