前端react 18.2整合ckeditor富文本编辑器——配置插件、自定义toolbar工具栏(一)https://developer.aliyun.com/article/1492704
⭐自定义插件
官方案例:https://ckeditor.com/docs/ckeditor4/latest/guide/plugin_sdk_sample.html
官网案例添加时间撮timestamp
CKEDITOR.plugins.add( 'timestamp', { icons: 'timestamp', init: function( editor ) { editor.addCommand( 'insertTimestamp', { exec: function( editor ) { var now = new Date(); editor.insertHtml( 'The current date and time is: <em>' + now.toString() + '</em>' ); } }); editor.ui.addButton( 'Timestamp', { label: 'Insert Timestamp', command: 'insertTimestamp', toolbar: 'insert' }); } });
💖 自定义yma16配置插件
在plugin目录添加csdn-yma16文件夹
编写plugin.js插件
plugin.js
(function() { CKEDITOR.plugins.add("csdn-yma16", { requires: ["dialog"], init: function(a) { a.addCommand("csdn-yma16", new CKEDITOR.dialogCommand("csdn-yma16")); a.ui.addButton("csdn-yma16", { label: "csdn-yma16",//调用dialog时显示的名称 command: "csdn-yma16", icon: this.path + "icons/yma16.jpg"//在toolbar中的图标 }); console.log('this.path',this.path) CKEDITOR.dialog.add("csdn-yma16", this.path + "dialogs/csdn-yma16.js") } }) })();
dialogs/csdn-yma16.js
CKEDITOR.dialog.add('csdn-yma16', function (editor) { //要和plugin.js 中的command 一致 var escape = function (value) { return value; }; return { title: '', //对话框标题 minWidth: 500, //对话框宽度 minHeight: 600,//对话框高度 contents: [{ //对话框内容 id: 'choice', name: 'choice', label: '插入选择题答案', title: '插入选择题答案', elements: [{ id: 'yma16_1', type: 'radio', //表单元素类型:单选按钮 items: [['csdn','[博客]'],['juejin','[博客]']] }, { id: 'yma16_2', type: 'radio', //表单元素类型:单选按钮 items: [['huawei','[芯片]'],['apple','[美国芯片]']] }, { id: 'yma16_3', type: 'radio', //表单元素类型:单选按钮 items: [['name','[姓名]']] }] }], onOk: function () { //点击确定按钮出发onOK事件。以下代码主要目的是构造一个select下拉框 let a = this.getValueOf('choice', 'yma16_1'); let b = this.getValueOf('choice', 'yma16_2'); let c = this.getValueOf('choice', 'yma16_3'); let rtn = ""; if(a != null){ rtn += a; } if(b != null){ rtn += b; } if(c != null){ rtn += c; } if (rtn != "") { rtns = "{{"+rtn+"}}"; editor.insertHtml(rtns); } else { return false; } } }; }); function htmlEncode(str) { var temp = document.createElement("div"); (temp.textContent != null) ? (temp.textContent = str) : (temp.innerText = str); var output = temp.innerHTML; temp = null; return output; }
classical Editor 效果
插件位置
dialog效果
插入样式
Inline Editor 内联编辑器样式
⭐总结
ckeditor编辑器两种用法区别
- Inline Editor 内联编辑器 选择字体才出现工具栏,用户视觉体验较好
- classical Editor 经典编辑器 工具栏默认固定位置展示,用户编辑体验较好
ckeditor编辑器自定义tools
a. 在editor入口plugin添加,需要了解plugin文档,目录结构清晰
b. 需要遵循ckeditor的api进行开发
富文本编辑器的优势
富文本编辑器具有以下优势:
- 易于使用:富文本编辑器可以帮助用户轻松地创建和编辑富文本内容,无需进行复杂的编程或设计工作。
- 可视化编辑:富文本编辑器提供了可视化编辑界面,用户可以直接在页面上进行编辑和调整,便于实时预览和调整。
- 自定义样式:使用富文本编辑器可以自定义字体、颜色、大小、对齐方式、缩进、列表等样式,并且可以在后台进行管理和编辑。
- 粘贴清理:富文本编辑器可以自动清理粘贴的文本,去除不需要的格式和样式,提高文本的可读性和美观度。
- 适应性强:富文本编辑器可以适应不同的浏览器和设备,并且可以提供不同的插件和功能,以满足不同的需求。
- 可扩展性:富文本编辑器可以通过插件和API进行扩展和自定义,以支持更多的功能和需求。
⭐结束
本文分享到这结束,如有错误或者不足之处欢迎指出!