javascript - 在 Chrome 上触发键盘事件

标签 javascript google-chrome webkit

我正在尝试在 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/

相关文章:

javascript - chrome.webRequest.onBeforeRequest.addListener 无法读取未定义的属性 'onBeforeRequest'

google-chrome - 在 Chrome Dev Tools 中切换断点的快捷方式

javascript - 谷歌浏览器是否有可用的代理对象 polyfill?

python - gtk-builder-错误-夸克 : invalid object type 'WebKitWebView'

javascript - UIWebView 中出现奇怪的 WebKit 错误 - 这可以被捕获吗?

javascript - 将相同的事件监听器添加到具有不同参数的多个元素

javascript - 使用 ASP :DropDownList is proving difficult 中的值填充弹出窗口

javascript - jQuery - autoNumeric 插件,自动从 .autoNumeric ('set' 触发 .change() ,值)

javascript - 如何在 JavaScript 中拆分具有多个分隔符的字符串?

html - Webkit 中的裁剪滚动条和边框