最近手头项目用到了富文本编辑器,而且要自己开发一些编辑器的插件,于是便直接使用了CKEditor。
CKEditor是目前能见到的比较灵活的WYSIWYG编辑器之一,在CKEditor上做扩展非常容易,而且界面的一致性也能得到很好的保证。
这里简单的把插件开发过程记录下来,留个存档,供以后需要之时翻来查用。
在插件目录plugin下建立自己的插件目录“myplugin”。
建立plugin.js,文件内容如下:
CKEDITOR.plugins.add('myplugin', { requires: ['dialog'], init: function(editor) { // 插件标识 var pluginName = 'myplugin'; // 启用对话框 var dialog = editor.addCommand(pluginName, new CKEDITOR.dialogCommand(pluginName)); CKEDITOR.dialog.add(pluginName, CKEDITOR.plugins.getPath(pluginName) + myplugin + '.js'); editor.ui.addButton('uploadpic', { // 插件名称 label: '我的插件', command: pluginName, // 设置工具栏按钮图片 icon: CKEDITOR.plugins.getPath(pluginName) + myplugin + '.png', }); } });
建立myplugin.js,文件内容如下:
CKEDITOR.dialog.add('myplugin', function(editor){ var escape = function(value){ return value; }; return { // 弹窗标题 title: '我的插件', // 是否可以调整大小 resizable: CKEDITOR.DIALOG_RESIZE_BOTH, // 弹窗宽 minWidth: 500, // 弹窗高 minHeight: 300, // 弹窗内容 contents: [ { // 定义标签一 id: 'localpic', 'label': '标签页一', elements: [ { type: 'file', label: '选择文件', id: 'localfile', required: true, }, { type: 'button', label: '按钮', id: 'upload', required: true, }, ], }, { // 定义标签二 id: 'photopic', 'label': '标签页二', elements: [ { type: 'html', html: 'HTML页面代码,显示富文本及自定义内容
', }, ], } ], onOk: function(){ code = this.getValueOf('cb', 'code'); lang = this.getValueOf('cb', 'lang'); html = '' + escape(code) + ''; // 将内容回写到编辑器 editor.insertHtml("" + html + ""); }, onLoad: function(){ } }; });
放置图标文件,图标文件名为myplugin.png,和两个JS文件放在同级目录。图片大小为16X16像素。
修改显示页面CKEDITOR对应配置
var content = CKEDITOR.replace( 'content', { // 启用插件 extraPlugins : 'myplugin', toolbar : [ ['Bold', 'Italic','Underline'], ['TextColor', 'BGColor'], ['Font', 'FontSize'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], '/', ['NumberedList','BulletedList'], ['Smiley'], ['Link', 'Unlink'], ['Table'], ['RemoveFormat'], // 在工具栏上显示插件按钮 ['myplugin'], ], } );