在osx 10.6.8上使用chrome 15
添加事件监听器时,我发现在使用preventDefault
事件时放入keypress
,我会遇到mas问题。
取消对该行event.preventDefault();
的注释,您会看到按键事件停止工作。这是什么交易?
答案 0 :(得分:8)
preventDefault()
完全符合预期。它会停止键的默认操作。如果您想要密钥的默认操作,请不要调用它。
在Chrome和Firefox中,即使从小提琴中取消注释preventDefault()
,我也会看到重复的按键。也许你失去了焦点。
如果你更多地描述你想要完成的事情,那将有助于我们知道在它的位置提出什么建议。
在你的jsFiddle中,你正在收听文档级别的密钥。当击键传播到文档时,它们已经被它们所针对的各个对象处理。如果要拦截并阻止处理密钥,则必须在事件处理程序中处理它们最初所针对的对象。您无法阻止文档级别的键上的默认值。在this jsFiddle我拦截他们去的第一个对象的击键,你可以看到他们被完全阻止了。您可能还想知道跨浏览器行为在这方面并不完美,因为您可以看到here的浏览器差异。