我用 Editor.js 做了一个简单的富文本编辑器,初始化一切正常,英文能打,但一输入中文就直接跳过拼音选择,直接把字母打上去了。比如我想打“你好”,结果出来的是“nihao”。
我试过在 React 里用 useRef 挂载,也试过原生 HTML 引入,都一样。是不是哪里配置漏了?我的初始化代码是这样的:
const editor = new EditorJS({
holder: 'editorjs',
tools: {
header: Header,
paragraph: Paragraph
}
});
根本原因:Editor.js 2.19 之前的版本对 IME(输入法)支持有缺陷,它没等输入法完成转换就把拼音字母直接输进去了。
解决办法很简单,升级版本就行:
先看一下你的 package.json 里 editorjs 的版本,如果是 2.18 或更低,升级到 2.22 以上的最新版本:
npm install @editorjs/editorjs@latest
如果你用的是原生 HTML 引入,也把 CDN 链接改成新版本:
升级完基本就好了,不用改任何配置代码。
如果你因为某些原因必须用旧版本,可以在初始化时加个 workaround,在 Editor.js 的 input 事件处理里加个判断,但说实话没必要,升级版本是最省事的。