如何将keyCode添加到WebKit中的合成KeyboardEvent?

时间:2012-10-18 13:23:44

标签: javascript webkit

我试图通过JavaScript创建一个KeyboardEvent,它尽可能地与浏览器本身创建的一个keyDown(例如,当我按下一个键时,var evt = document.createEvent("KeyboardEvent"); 事件会触发。与此事件关联的事件对象是我正在尝试重现的事件。

createEvent method 可用于创建特定类型的事件:

initKeyEvent

然后,initKeyboardEvent method可用于使用一些数据初始化事件对象。这种方法的签名似乎在浏览器之间变化很大。我在Firefox中使用了这个,它使用了evt.initKeyboardEvent( "keydown", // The name of the event true, // Whether it bubbles true, // Whether it can be cancelled window, // The `window` in which it is being fired "U+004A", // The "key identifier" (this is an uppercase "J") 0, // The "key location" (0 for the normal character keys) false, // Whether the Control key was held false, // Whether the Alt key was held false, // Whether the Shift key was held false, // Whether a meta key was held false // Whether the "Alt Graph" key was held? ); 方法。据我所知,WebKit需要以下参数:

keyCode

似乎没有办法传递密钥代码(在whichkeyCode属性中)。我试图关注WebKit源代码,但这并没有帮助。 KeyboardEvent IDL definition似乎引用了charCode属性(以及KeyboardEvent属性),但我无法弄清楚它是如何获得值的。

来自WebKit源的相关文件:

这是一个fiddle to demonstrate the issue。打开控制台,keyCode应该在那里进行检查。这是合成的。请注意which0属性的值keyCode。如果您关注“结果”框并按任意键,则可以检查本机事件对象以查看差异。

所以,我的问题:是否可以在WebKit中向合成which对象添加KeyboardEvent或{{1}}值,如果是,我该怎么做呢吗

0 个答案:

没有答案