返回
记一次实现wangeditor自定义菜单遇到的问题
前端
2024-01-15 23:06:33
引言
wangeditor是一款功能强大且易于使用的富文本编辑器,它允许用户轻松地创建和编辑富文本内容。为了满足不同的使用需求,wangeditor提供了自定义菜单功能,允许用户根据自己的需要添加或删除菜单项。本文将记录我在实现wangeditor自定义菜单时遇到的问题以及相应的解决方法。
实现wangeditor自定义菜单
v5版本
在v5版本中,实现自定义菜单相对简单,只需要在创建编辑器实例时,将自定义菜单项添加到config.menus
选项中即可。例如:
const editor = new WangEditor({
menus: [
'head', // 标题
'bold', // 粗体
'fontSize', // 字号
'fontName', // 字体
'italic', // 斜体
'underline', // 下划线
'strikeThrough', // 删除线
'foreColor', // 文字颜色
'backColor', // 背景颜色
'link', // 链接
'list', // 列表
'quote', // 引用
'image', // 图片
'video', // 视频
'table', // 表格
'code', // 代码
'undo', // 撤销
'redo', // 重做
]
});
v4版本
在v4版本中,实现自定义菜单稍微复杂一些,需要使用createMenu
方法来创建自定义菜单。例如:
const editor = new WangEditor(document.getElementById('editor'));
const menu = editor.createMenu([
'head', // 标题
'bold', // 粗体
'fontSize', // 字号
'fontName', // 字体
'italic', // 斜体
'underline', // 下划线
'strikeThrough', // 删除线
'foreColor', // 文字颜色
'backColor', // 背景颜色
'link', // 链接
'list', // 列表
'quote', // 引用
'image', // 图片
'video', // 视频
'table', // 表格
'code', // 代码
'undo', // 撤销
'redo', // 重做
]);
editor.menus.extend(menu);
遇遇到的问题
问题一:v5版本自定义菜单无法正常显示
在实现v5版本自定义菜单时,我遇到一个问题:自定义菜单无法正常显示。经过排查,我发现问题出在config.menus
选项的配置上。原来,config.menus
选项需要传入一个数组,数组中的每个元素都是一个字符串,表示菜单项的名称。但是,我在配置时,将config.menus
选项配置成了一个对象,导致自定义菜单无法正常显示。
解决方法:
const editor = new WangEditor({
menus: [
'head', // 标题
'bold', // 粗体
'fontSize', // 字号
'fontName', // 字体
'italic', // 斜体
'underline', // 下划线
'strikeThrough', // 删除线
'foreColor', // 文字颜色
'backColor', // 背景颜色
'link', // 链接
'list', // 列表
'quote', // 引用
'image', // 图片
'video', // 视频
'table', // 表格
'code', // 代码
'undo', // 撤销
'redo', // 重做
]
});
问题二:v4版本自定义菜单无法与vue实例交互
在实现v4版本自定义菜单时,我遇到另一个问题:自定义菜单无法与vue实例交互。经过排查,我发现问题出在createMenu
方法的配置上。原来,createMenu
方法需要传入一个对象,对象中的每个键值对都表示一个菜单项的名称和回调函数。但是,我在配置时,将createMenu
方法配置成了一个数组,导致自定义菜单无法与vue实例交互。
解决方法:
const editor = new WangEditor(document.getElementById('editor'));
const menu = editor.createMenu({
head: {
$el: $('#head'),
onClick: function (e) {
// 菜单项点击时的回调函数
}
},
bold: {
$el: $('#bold'),
onClick: function (e) {
// 菜单项点击时的回调函数
}
},
fontSize: {
$el: $('#fontSize'),
onClick: function (e) {
// 菜单项点击时的回调函数
}
},
// ...其他菜单项
});
editor.menus.extend(menu);
结语
通过解决这些问题,我成功地实现了wangeditor的自定义菜单功能。希望这篇文章能够帮助其他用户快速上手wangeditor的自定义菜单功能,并避免遇到同样的问题。