javascript - 字母数字键的编辑器按键锁定
问题描述
我正在开发一个编辑器项目,并在常用的编辑器中实现了用于字母数字键输入的 UX 在 keyDown 上注册一次,因为其他键在 keyDown 上很简单。例如。如果你a
按住,它会插入a
,但.
它会插入......
。所以我的实现是这样的:
let keydownLock = false
const onKeyUp = () => { keydownLock = false }
const onKeyDown = () => {
if (keydownLock) return
if (isAlphanumeric) keydownLock = true
other key handling...
}
我的问题是:
- 如果这是用于键输入的编辑器标准 UX,请指点我一些参考资料。
- 是否有一些特殊的关键事件可以更容易地实施?
更新:我意识到这是所有内容可编辑的 HTML 元素的标准行为。所以不需要实现任何东西。但我的第一个问题仍然存在。
解决方案
根据我从您的问题中了解到的情况,基本上在 Javascript 中,onkeypress 事件类似于 onkeydown 事件,但它不会针对所有浏览器中的所有键类型触发。
如果要取消键盘输入,最好同时取消 onkeydown 和 onkeypress 事件,因为有时需要取消 onkeypress/onkeydown 事件,具体取决于浏览器和按下键的类型。例如,如果要取消光标的左、上、右、下键,在 Internet Explorer、Firefox、Google Chrome 和 Safari 中需要取消 onkeydown 事件,在 Opera 中需要取消 onkeypress 事件。对于字母数字字符,取消 onkeydown 和 onkeypress 事件之一就足够了。
推荐阅读
- python - 如何在 Matplotlib 中调整绘图大小或修复日期轴?
- reactjs - 在 CodeSandbox 中反应上下文
- go - 使用 google.golang.org/api/discovery/v1 的 Golang 示例
- python - 如何创建在分隔行中打印每个字母的代码
- java - 通过jenkins使用maven运行java ProcessBuilder不起作用
- php - Wordpress:架构未以不同的语言页面显示
- google-apps-script - 为什么我的代码不能将数据从一个工作表移动到另一个工作?
- javascript - 使用 JavaScript onChange 函数更改字段值
- python - 在 MySQL 中存储 unicode 字节的正确方法是什么?
- dataframe - 如何从 pyspark pr sparksql 中的 date_time 捕获时间部分?