我正在从事一个编辑器项目,并在常用的编辑器中实现,字母数字键输入的UX在keyDown上注册一次,其他键在keyDown上很简单。例如。如果按住a
,则将插入a
,但对于.
,将插入......
。所以我有这样的实现:
let keydownLock = false
const onKeyUp = () => { keydownLock = false }
const onKeyDown = () => {
if (keydownLock) return
if (isAlphanumeric) keydownLock = true
other key handling...
}
我的问题是:
更新:我意识到这是所有可编辑内容的HTML元素的标准行为。因此,无需执行任何操作。但是我的第一个问题仍然存在。
从我从您的问题中可以了解的内容来看,基本上在Javascript中,onkeypress事件与onkeydown事件类似,但是不会在所有浏览器中都针对所有键类型触发。
如果要取消键盘输入,最好同时取消onkeydown和onkeypress事件,因为有时根据浏览器和所按键的类型需要取消onkeypress / onkeydown事件。例如,如果要取消向左,向上,向右和向下键的光标,则需要在Internet Explorer,Firefox,Google Chrome和Safari中取消onkeydown事件,而需要在Opera中取消onkeypress事件。对于字母数字字符,取消onkeydown和onkeypress事件之一就足够了。