我有兴趣做这样的事情:
...
event.preventDefault();
...
el.dispatchEvent(event);
我在Firefox中尝试了这个,它引发了NS_ERROR_ILLEGAL_VALUE
例外。
是否有可能捕获事件并在稍后阶段触发?
对于那些感兴趣的人,这是我的高级目标。我正在尝试确定何时将下划线键入textarea(即shift +“ - ”)。不幸的是,Firefox报告此事件的keyCode
和charCode
为0,与波形符(shift +“`”)击键相同的值。为了消除歧义,我的想法是捕获事件,抑制其默认行为,并在另一个 textarea上“释放”它。然后,我会检查这个(隐藏的)textarea的值,以确定按下了哪个键。
更新:我正在使用onkeydown
,而不是onkeypress
。
答案 0 :(得分:1)
据我所知,队列中已有的事件无法“重用”,因为它无法“拉出”队列。它是给你的,然后是行中的下一个处理程序,依此类推,但本机委托对所有这些都是相同的。所以,你必须做一个新的。既然你说你无法获得关于事件的所有数据,那就是一个问题。
更简单的技巧可能是观察textarea的更改,然后删除文本中出现的下划线。如果要保持光标位置,可以查看here以获得有关如何准确定位光标的解决方案(RonPK的响应)。
出于好奇,根据我的测试here,Firefox 4会报告正确的charCode和shift状态。这是特定版本/操作系统问题吗?
答案 1 :(得分:-1)
出了什么问题:
String.fromCharCode(event.keyCode);
E.g。在事件处理程序中:
var character = String.fromCharCode(event.keyCode);
if (character === '_') {
// Do something.
}