【问题标题】:Editor keydown lock for alphanumeric keys字母数字键的编辑器按键锁定
【发布时间】:2019-10-27 20:13:42
【问题描述】:

我正在开发一个编辑器项目,并在常用的编辑器中实现了字母数字键输入的 UX 在 keyDown 上注册一次,其他键在 keyDown 上很简单。例如。如果按住a 并按住,它将插入a,但对于.,它将插入......。所以我的实现是这样的:

let keydownLock = false
const onKeyUp = () => { keydownLock = false }
const onKeyDown = () => {
  if (keydownLock) return
  if (isAlphanumeric) keydownLock = true
  other key handling...
}

我的问题是:

  1. 如果这是用于按键输入的编辑器标准 UX,请指出一些参考资料。
  2. 是否有一些特殊的关键事件更容易实现?

更新: 我意识到这是所有内容可编辑的 HTML 元素的标准行为。所以不需要实现任何东西。但我的第一个问题仍然存在。

【问题讨论】:

  • 不清楚你在这里问什么。你说字母数字在keyDown 上注册过一次。那有什么意思?然后,您说其他键在 keyDown 上注册,就好像它与字母数字键的处理方式相矛盾,但您说 keyDown 两者兼而有之。

标签: javascript events editor


【解决方案1】:

根据我从您的问题中了解到的情况,基本上在 Javascript 中,onkeypress 事件类似于 onkeydown 事件,但它不会针对所有浏览器中的所有键类型触发。

如果你想取消键盘输入,最好同时取消onkeydown和onkeypress事件,因为有时onkeypress/onkeydown事件需要根据浏览器和按键类型取消。例如,如果要取消光标左、上、右、下键,在 Internet Explorer、Firefox、Google Chrome 和 Safari 中需要取消 onkeydown 事件,在 Opera 中需要取消 onkeypress 事件。对于字母数字字符,取消 onkeydown 和 onkeypress 事件之一就足够了。

【讨论】:

  • 我想你误解了我的问题,这有点难以描述,也许在编辑器中按住a. 并观察差异可能更容易。我试图找出为什么所有编辑器都会出现这种行为。
  • 你可以使用这个评论文本区域来尝试它。我还尝试过 Google doc、Word、sublime、vscode。
猜你喜欢
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 2020-10-09
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
相关资源
最近更新 更多