Summernote在Vue中初始化后无法输入中文怎么办?

闲人雨晨 阅读 34

我在Vue项目里集成Summernote,初始化后英文能正常输入,但一打中文就卡住,候选框不出现,甚至整个编辑器变白。试过切换浏览器和更新依赖都没用。

下面是我的组件代码:

<template>
  <div id="summernote"></div>
</template>

<script>
export default {
  mounted() {
    $('#summernote').summernote({
      height: 300,
      lang: 'zh-CN'
    });
  }
}
</script>
我来解答 赞 12 收藏
二维码
手机扫码查看
2 条解答
欧阳津孜
这个问题听起来挺头疼的。Summernote在Vue里初始化后中文输入有问题,可能是jQuery和Vue混用导致的DOM操作冲突。我们可以尝试用Vue的方式来初始化Summernote,这样能更好地管理生命周期。

首先,确保你已经正确引入了jQuery和Summernote,并且版本兼容。然后,我们可以稍微调整一下代码,确保在Vue组件销毁时也销毁Summernote实例,避免内存泄漏和其他潜在问题。

修改后的代码如下:

template:
'
',

script:
export default {
mounted() {
$(this.$refs.summernote).summernote({
height: 300,
lang: 'zh-CN'
});
},
beforeDestroy() {
// 销毁Summernote实例,避免内存泄漏
$(this.$refs.summernote).summernote('destroy');
}
}


这里的关键改动是使用ref来获取DOM元素,而不是直接通过ID选择器。这样Vue和jQuery之间的协作会更顺畅一点。另外,别忘了在组件销毁之前清理Summernote实例,这一步有时候能解决一些奇怪的问题。

希望这个方法能帮到你,如果还有问题,检查一下控制台有没有错误信息,或者尝试单独在非Vue环境中运行Summernote看看是否有同样的问题。
点赞
2026-03-23 14:04
Newb.梓玥
这个问题很常见,不是你代码写错了,而是少引了一个文件。

Summernote的 lang: 'zh-CN' 只是告诉编辑器用中文,但它需要对应的语言包才能正常工作。你只引了核心库,没引中文语言包。

解决办法很简单,引入这个js:

// 在你的summernote.js引入之后加上这个
import 'summernote/lang/summernote-zh-CN'


或者如果你是用CDN的方式:

<link href="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/summernote.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/summernote.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/lang/summernote-zh-CN.js"></script>


注意版本号要对上,summernote和lang文件的版本必须一致。

另外提醒一下,用jQuery的方式在Vue里搞DOM操作其实不太规范,以后可以考虑换成vue-quill-editor或者tiptap这些更贴合Vue的富文本编辑器。不过当前问题按上面那样改就能解决。
点赞
2026-03-11 12:02