Javascript 如何向WebKit中的合成键盘事件添加键盘代码?

Javascript 如何向WebKit中的合成键盘事件添加键盘代码?,javascript,webkit,Javascript,Webkit,我正试图通过JavaScript创建一个KeyboardEvent,该事件与浏览器本机创建的事件尽可能相似(例如,当我按下一个键时,会触发keyDown事件。与此事件关联的事件对象就是我试图重现的对象) 可用于创建特定类型的事件: var evt=document.createEvent(“KeyboardEvent”); 然后,可以使用来初始化带有一些数据的事件对象。这种方法的签名在不同浏览器之间似乎差异很大。我已经在Firefox中实现了这一点,它使用了initKeyEvent方法。据我所

我正试图通过JavaScript创建一个
KeyboardEvent
,该事件与浏览器本机创建的事件尽可能相似(例如,当我按下一个键时,会触发
keyDown
事件。与此事件关联的事件对象就是我试图重现的对象)

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

var evt=document.createEvent(“KeyboardEvent”);
然后,可以使用来初始化带有一些数据的事件对象。这种方法的签名在不同浏览器之间似乎差异很大。我已经在Firefox中实现了这一点,它使用了
initKeyEvent
方法。据我所知,WebKit需要以下参数:

evt.initKeyboardEvent(
“keydown”,//事件的名称
true,//是否冒泡
true,//是否可以取消
window,//正在其中激发它的“window”
“U+004A”,//密钥标识符(这是大写的“J”)
0,//键位置(0表示普通字符键)
false,//是否持有控制键
false,//是否持有Alt键
false,//是否按住Shift键
false,//是否持有元密钥
false//是否按住了“Alt Graph”键?
);
似乎没有任何方法可以传递键代码(在
keyCode
which
属性中)。我曾尝试跟踪WebKit的源代码,但没有任何帮助。似乎引用了
keyCode
属性(和
charCode
属性),但我无法确定它是如何获得值的

WebKit源中的相关文件:

这里有一个例子。打开控制台,应该有一个
键盘事件
进行检查。那是合成的。请注意
keyCode
哪些属性的值为
0
。如果聚焦“结果”帧并按任意键,则可以检查本机事件对象以查看差异


所以,我的问题是:是否可以在WebKit中的合成
KeyboardEvent
对象中添加一个
keyCode
值,如果可以,我该怎么做?

这似乎是WebKit@Glutamat中的一个bug-很好的发现,不确定这是怎么从我身边溜走的,我已经找了一个小时了!谢谢