CKEditor 简单图片上传插件开发和详细步骤
CKEditor插件使用方法就不在这里赘述了,这里只讲CKEditor的插件开发,下面是官方开发的指南的地址
官方插件开发指南
CKEditor插件目录
- ckeditor 根目录/
- plugins/
- pluginName 与插件名对应的文件夹/
- icons 插件图标文件夹/
- pluginIcon.png
- dialog 如果插件有弹出框则需要/
- plugin.js 插件脚本/
本次开发的插件没有弹出框 (dialog),所以没有dialog文件夹。
目录结构如下:
第一步(开发插件目录下的plugin.js)
需要用到的几个方法和类
1.CKEDITOR.plugins.add()
方法定义如下,需要两个参数
- 第一个参数是字符串,插件名字
- 第二个参数需要定义一个 CKEDITOR.pluginDefinition 函数对象
2.CKEDITOR.pluginDefinition对象
该对象下有四个方法分别是:
- afterInit(editor) 初始化页面之后调用
- beforeInit(editor) 初始化页面之前调用
- init(editor) 初始化页面调用
- onLoad(editor) 页面载入完成时调用
官方描述如下:
3.editor.ui.addButton()
方法描述:添加新的按钮到按钮列表
该方法接收两个参数:
- 按钮名字,接收字符串
- 按钮属性定义对象,常用的有
- label 按钮提示和按钮显示的文字(如果可见的话)
- command 当按钮被点击的时候执行的命令名字,类似onClick()方法中的执行函数名。
- icon 按钮图标图片路径
官方描述如下:
4.editor.addCommand()
方法描述:添加一个命令到editor实例,该命令添加之后可以使用execCommand()执行。
该方法接收两个参数:
- 命令名,接收字符串,上面addButton中的命令名于此处对应
- 命令定义对象 (commandDefinition) ,详细如下 5
官方描述如下:
5.CKEDITOR.commandDefinition
该对象包含两个方法:
- exec 命令被调用时执行此函数
- refresh 通过命令定义定义的函数来确定的命令状态,当编辑器有它改变了状态或选择它会被调用。
官方描述如下:
上面讲解了需要用到的方法和对象
下面直接上代码
plugin.js代码
/*** 添加自定义图片上传组件*/
CKEDITOR.plugins.add('MultipleImageUpload',{//调用add方法添加插件init : function (editor) { //初始化页面时调用方法,接收一个富文本对象实例var pluginName = 'MultipleImageUpload'; //插件名var _file = document.getElementById('editFileInput'); //获取页面中的file文件选择器对象/*** 添加执行命令*/editor.addCommand('openFileComm', {//添加命令exec : function (editor) {//命令调用时执行此函数_file.click(); //触发文件选择器的点击事件_file.onchange = function(){//为文件选择器独享绑定onchange方法console.log("_file is changed");upload();//执行函数function upload(){var file = new FormData($("#editorImageForm")[0]);//获取文件表单中的文件对象$.ajax({ //使用ajax请求上传图片url : FILE_UPLOAD_URL + FILE_UPLOAD_URI,type : 'POST',data : file,async : false,cache : false,contentType : false,processData : false,success : function(data) {var element = CKEDITOR.dom.element.createFromHtml( '<img style="width: 100%;" src="'+ ACCESS_SERVER_URL + data.response[1] +'" border="0" />' );//上传成功后添加上传完成的图片元素到富文本内容中editor.insertElement( element );//插入元素},error : function() {alert("图片上传失败!");}});}};},async : true});editor.ui.addButton && editor.ui.addButton(pluginName, { //添加一个上传图片的按钮label: '多图片上传',//按钮提示名command: 'openFileComm',//当按钮被点击时执行上面定义好的命令/*** 添加自定义按钮图片*/icon: this.path + 'images/hello_icon.png'});},/*onLoad : function(){alert('onload');console.log(this);}*/
});
HTML代码
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<script src="../ckeditor/ckeditor.js"></script>
<script src="../js/jquery-easyui-1.3.5/jquery-1.12.0.js"></script>
<script src="../js/general_query.js"></script>
<script src="../ckeditor/samples/js/sample.js"></script>
<script src="../js/background-module/editorPage.js"></script>
<link rel="stylesheet" href="../ckeditor/samples/css/samples.css" />
<link rel="stylesheet" href="../ckeditor/samples/toolbarconfigurator/lib/codemirror/neo.css" />
<title>富文本编辑器</title>
</head>
<body><main><!--富文本插件显示区域--><div id="editor"><!-- <h1>Hello world!</h1><p>I'm an instance of <a href="http://ckeditor.com">CKEditor</a>.</p> --></div><!--用于上传图片的表单--><div><form id="editorImageForm" enctype="multipart/form-data" method="post"style="display: none"><div><input type="file" id="editFileInput" name="file"accept=".gif,.png,.jpg,.jpeg" /><br></div></form></div></main><button id='putContentBtn' type="button" style="height: 2.1rem;">保存编辑内容</button>
</body>
<script>$(function(){/*EditorPage.initPage();*/initSample();//页面载入调用方法初始化富文本编辑器});
</script>
</html>
最后将开发好的按钮添加到toolbar中
修改根目录下的config.js
/*** @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.* For licensing, see LICENSE.md or http://ckeditor.com/license*/CKEDITOR.editorConfig = function( config ) {// Define changes to default configuration here.// For complete reference see:// http://docs.ckeditor.com/#!/api/CKEDITOR.config// The toolbar groups arrangement, optimized for two toolbar rows.config.toolbar = [{ name: 'clipboard', items: [ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo' ] },{ name: 'editing', items: [ 'Scayt' ] },{ name: 'links', items: [ 'Link', 'Unlink', 'Anchor' ] },{ name: 'insert', items: [ 'Image', 'Table', 'HorizontalRule', 'SpecialChar' ] },{ name: 'tools', items: [ 'Maximize' ] },{ name: 'document', items: [ 'Source' ] },'/',{ name: 'basicstyles', items: [ 'Bold', 'Italic', 'Strike', '-', 'RemoveFormat' ] },{ name: 'paragraph', items: [ 'NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote' ] },{ name: 'styles', items: [ 'Styles', 'Format' ] },{ name: 'about', items: [ 'About' ] },'/',{ name: 'imageUpload', items: ['MultipleImageUpload'] }//定义好的按钮,添加到工具栏/*,'/',{ name: 'extent', items:[ 'HelloWorld' ] }*/];config.extraPlugins += (config.extraPlugins ? ',MultipleImageUpload' : 'MultipleImageUpload');//定义好的按钮,添加到工具栏/*config.extraPlugins += (config.extraPlugins ? ',HelloWorld' : 'HelloWorld');*/// Remove some buttons provided by the standard plugins, which are// not needed in the Standard(s) toolbar.config.removeButtons = 'Underline,Subscript,Superscript';// Set the most common block elements.config.format_tags = 'p;h1;h2;h3;pre';// Simplify the dialog windows.config.removeDialogTabs = 'image:advanced;link:advanced';//config.allowedContent = true;/*config.width = '600px';*/config.height = '350px';
};
插件最终效果:
CKEditor 简单图片上传插件开发和详细步骤相关推荐
- ckeditor java 上传_java使用CKEditor实现图片上传功能
java如何使用ckeditor实现图片上传功能,具体内容如下 1.根据实际需要下载指定的ckeditor 2.删除文件ckeditor/plugins/image/dialogs/image.js预 ...
- 使用struts2完成ckeditor和图片上传
代码地址如下: http://www.demodashi.com/demo/12427.html 使用struts2完成ckeditor和ckeditor图片上传 ckeditor版本ckeditor ...
- xshell往linux传文件,Xshell向Linux服务器上传文件的详细步骤
相信Linux用户对Xshell远程管理软件都不陌生的,不过对于一些新手朋友来讲,向Linux服务器上传文件可能还存在难度,这里小编就分享了Xshell向Linux服务器上传文件的详细步骤,下面一起来 ...
- asp.net core集成CKEditor实现图片上传功能
背景 本文为大家分享了asp.net core 如何集成CKEditor ,并实现图片上传功能的具体方法,供大家参考,具体内容如下. 准备工作 1.visual studio 2019 开发环境 2. ...
- ckeditor ——在图片上传中上传其他文件(word等)
最近项目中遇到需要用富文本编辑文档,最终以公告的形式在内网中展示,其中一个简单的要求就是要有附件.因为知道ckeditor是有图片的上传了,于是想是不是也可以上传如word,pdf等附件呢.这样内网展 ...
- CKEditor实现图片上传以及预览
前言 CKEditor其实不需要多介绍,最早之前叫FCKEditor,后面改名了,其实就是一个富文本编辑器. The best web text editor for everyone 上面是官网首页 ...
- CKEditor实现图片上传
本人用的 CKEditor版本为4.3 CKEditor 配置和部署参考CKEditor4.x部署和配置. CKEditor编辑器的工具栏中初始的时候应该是这样子的,没有图片上传按钮 并且预览中有一 ...
- .net MVC 简单图片上传
主要完成的是在网页上 上传一张图片到服务器 我搜出来的上传文件代码都特别复杂,对于初学者来说,先解决能上传的问题才最重要,并不需要特别多的功能,仅适合不会上传的初学者,大神请绕路,错误请指出,谢谢 v ...
- 使用 SpringBoot + Ckeditor 富文本编辑器、图片上传
一.前言 在一些页面中,进行 发表文章.评论等功能,都要涉及到富文本编辑器, 如 CSDN 的 markdown 编辑器 使用传统的 textarea 标签是远远满足不了需求的, 现在流行的富文本编辑 ...
最新文章
- Python学习—基础数据结构之列表
- [css] 要让Chrome支持小于12px的文字怎么做?
- win10创建新的计算机用户名和密码错误,Win10开机提示用户名或密码不正确现象的解决办法...
- 没车牌也能开上国产特斯拉:北京3年租赁每月1万1,全国最低7千
- 实体与表映射关系XXX.hbm.xml配置详解(转)
- apache commons-beanutils中BeanUtils和PropertyUtils区别
- 服装企业为什么要用湖州管家婆ERP管理软件?
- 天大2021年秋学期考试《画法几何及工程制图》离线作业考核试题
- 遥感图像预处理-几何校正
- iOS(swift): Core ML的使用
- Skywalking应用
- Hello,Bada!
- 最强神器工具:新一代多系统启动 U 盘装机解决方案
- Visual Studio 2010——C#的主菜单的使用
- 数字电视图像相关的基本概念
- 分布式商城项目-后台开发-SSM工程整合网站模板
- ECharts饼图lengend点击事件处理
- linux设置mac地址命令,[转载]Linux下修改MAC地址
- 鲁大师发布2021年Q1季度报告,哪些手机最强?
- 问题记录:从EXCEL2013导入数据CSV文件,提示报错“此文本文件包含的数据无法放置在一个工作表中。如要继续导入可容纳的数据,请单击确定。。。”
热门文章
- 怎么在命令行执行.py文件,py文件生成可执行文件
- set-valued function called in context that cannot accept a set
- JavaScript调用cs中带参数的函数
- Jenkins 视图
- ERP实施-采购业务集成(103和105移动类型两步入库)
- mvn install 和mvn package 区别
- 持续集成与持续部署(一)——核心概念之持续集成、持续交付、持续部署
- 正在恶补的Java基础(三)
- 【基础恶补】JavaScript数组的一些方法,reduce,filter,reverse,map等
- android md5的使用方法,Android实现简单MD5加密的方法