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