我正在尝试在 Chrome 上使用 JavaScript 向页面触发键盘事件。 我有一个曾经在 Firefox 上运行的方法:
pressKey = function(key, shift) {
var evt = document.createEvent('KeyboardEvent');
evt.initKeyEvent("keypress", false, true, null, false, false,
shift, false, keyCode(key), key.charCodeAt(0));
document.dispatchEvent(evt);
}
其中 key 是所需的键,keyCode 将小写字母更改为大写字母,并调用 charCodeAt()。
我的问题是 Safari/Chrome 上的事件没有 initKeyEvent,而是 initKeyboardEvent。我注意到的主要区别是,您必须将 key 作为 keyIdentifier(看起来像 unicode 字符)传递,而不是传递 keycode 和 keychar。尽管如此,我仍然无法使其发挥作用。
我还尝试了 here 中描述的 JQuery 方法没有成功。
编辑: 我进一步调试了一下,似乎 Chrome 上的事件确实触发了监听器,但 keyCode/charCode 始终为 0。我尝试设置 evt.keyCode 或 evt.charCode 也没有成功。
最佳答案
我已经追踪到 bug on Webkit其中创建的事件仅包含 KeyIdentifier,但没有 keyCode/charCode,如 browser source code 上所示。 。似乎有一个补丁可以解决这个问题。所以我想这不再是一个合适的问题......
关于javascript - 在 Chrome 上触发键盘事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1897333/