Editor.js 初始化后无法输入中文,怎么回事?

一培珍 阅读 45

我用 Editor.js 做了一个简单的富文本编辑器,初始化一切正常,英文能打,但一输入中文就直接跳过拼音选择,直接把字母打上去了。比如我想打“你好”,结果出来的是“nihao”。

我试过在 React 里用 useRef 挂载,也试过原生 HTML 引入,都一样。是不是哪里配置漏了?我的初始化代码是这样的:

const editor = new EditorJS({
  holder: 'editorjs',
  tools: {
    header: Header,
    paragraph: Paragraph
  }
});
我来解答 赞 10 收藏
二维码
手机扫码查看
2 条解答
Dev · 正汉
这问题八成是 Editor.js 默认不支持中文输入法,得自己加个输入法处理。懒人方案就是在初始化时加上 onKeydown 事件拦截,用个简单的中文输入法库,比如 compositionstart 和 compositionend 来控制输入状态。


const editor = new EditorJS({
holder: 'editorjs',
tools: {
header: Header,
paragraph: Paragraph
},
onKeydown: (event, {tools, block}) => {
if (event.isComposing || event.keyCode === 229) {
return;
}
// 其他处理
}
});


顺带说下,这其实是个常见坑,Editor.js 官方确实没太关注中文输入体验,凑合用吧。
点赞
2026-03-28 07:05
雨橙 Dev
这个问题我之前也遇到过,跟配置没关系,是 Editor.js 早期版本的一个 bug。

根本原因:Editor.js 2.19 之前的版本对 IME(输入法)支持有缺陷,它没等输入法完成转换就把拼音字母直接输进去了。

解决办法很简单,升级版本就行:

先看一下你的 package.json 里 editorjs 的版本,如果是 2.18 或更低,升级到 2.22 以上的最新版本:

npm install @editorjs/editorjs@latest

如果你用的是原生 HTML 引入,也把 CDN 链接改成新版本:



升级完基本就好了,不用改任何配置代码。

如果你因为某些原因必须用旧版本,可以在初始化时加个 workaround,在 Editor.js 的 input 事件处理里加个判断,但说实话没必要,升级版本是最省事的。
点赞 1
2026-03-12 12:23