ueditor文本编辑器
- 格式:doc
- 大小:91.00 KB
- 文档页数:5
UEditor富⽂本编辑器上传图⽚配置UEditor 上传⽂件不进⾏配置的话,是⽆法使⽤的。
然后下载符合⾃⼰项⽬的版本,我是⽤的asp版,其实都⼀样,因为基本不需要你进⾏编码
解压后⾥⾯是这个样⼦的
把整个⽂件夹都扔进项⽬,然后我们就要开始配置了
打开ueditor.config.js,看⼀下serverUrl是不是指向controller.asp,如果不是就改为指向controller.asp。
接下来打开asp⽂件夹中的config.json
⾥⾯图⽚上传相关的配置有两个地⽅
⾃带的注释已经写得很详细了,就不多做解释了
如果上传的图⽚位置不对
改 imagePathFormat
如果上传时正常,上传后在富⽂本编辑器中显⽰时路径不对
改 imageUrlPrefix
如果上传时和富⽂本中都正常,但是多图上传→在线管理的路径不对
改 imageManagerUrlPrefix
第⼀张图是上传功能的相关配置,第⼆张图则是多图上传→在线管理的相关配置
到这⾥就配置完了
config.json⾥还有上传⽂件的相关配置,需要的话也可以⾃⼰看看,应该和图⽚没什么区别。
百度ueditor富⽂本编辑器实现上传⽂件、图⽚、视频到ftp服务器并在页⾯端回显之前⼀直⽤ueditor作为富⽂本编辑器,想要实现图⽚上传到ftp的功能,⽹上搜索了⼀圈,发现都感觉讲的不是很明⽩,⽽且有不少要引⼊其他的java代码,最近⾃⼰试了⼀下,终于调通了,希望能帮到各位。
废话不多说,查看步骤。
(注意,这个是springboot版本,其实springmvc的也差不多,有⼀点点不同,最后我会说明)1.将utf8-jsp的整个⽂件夹复制到resources的static⽬录下,打开之后⽬录如下。
项⽬⽬录如下(我多加了⼀层ueditor⽬录,不过也⼀样)2.写两个controller,代码如下(请忽略楼主潦草的代码,⾃⼰拿回去调整⼀下,修改⼀下UploadController中ftp的地址,密码即可,总共有三个地⽅)1.UploadControllerpackage com.wang.controller;import lombok.extern.slf4j.Slf4j;import mons.fileupload.FileItem;import mons.fileupload.disk.DiskFileItemFactory;import mons.fileupload.servlet.ServletFileUpload;import .ftp.FTP;import .ftp.FTPClient;import .ftp.FTPConnectionClosedException;import .ftp.FTPReply;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import javax.imageio.ImageIO;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.awt.image.BufferedImage;import java.io.*;import .URLEncoder;import java.text.SimpleDateFormat;import java.util.*;@RequestMapping("/ueditor/file")@Controller@Slf4jpublic class UploadController {private FTPClient ftpClient = new FTPClient();private Logger logger = LoggerFactory.getLogger(UploadController.class);//上传图⽚并回显@RequestMapping("/uploadImg")@ResponseBodypublic Map<String,Object> upload(HttpServletRequest request) throws Exception {Map<String ,Object> map = new HashMap<>();// 判断enctype属性是否为multipart/form-databoolean isMultipart = ServletFileUpload.isMultipartContent(request);if (!isMultipart)throw new IllegalArgumentException("上传内容不是有效的multipart/form-data类型.");// Create a factory for disk-based file itemsDiskFileItemFactory factory = new DiskFileItemFactory();// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload(factory);FileItem item = (FileItem) iter.next();// 如果是⽂件字段String fieldName = item.getFieldName();String orginFileName = item.getName();String imgSunffix = orginFileName.substring(stIndexOf(".")); String uuid = UUID.randomUUID().toString().replaceAll("-", "");String fileName = uuid+imgSunffix;// String contentType = item.getContentType();// boolean isInMemory = item.isInMemory();// long sizeInBytes = item.getSize();// String filePath = STORE_FILE_DIR + fileName;//写⼊⽂件到当前服务器磁盘// File uploadedFile = new File(filePath);SimpleDateFormat formatPath = new SimpleDateFormat("yyMMdd");SimpleDateFormat fromahhPath = new SimpleDateFormat("HH");String yyMMdd = formatPath.format(new Date());String hours = fromahhPath.format(new Date());String ftpfilePath = yyMMdd + "/" + hours;// FileInputStream fileInputStream = (FileInputStream) item.getInputStream(); InputStream inputStream = item.getInputStream();BufferedInputStream bufferedInputStream = null;bufferedInputStream = new BufferedInputStream(inputStream);FTPClient ftp = new FTPClient();try {int reply;ftp.connect("11111", 21);// 连接FTP服务器// 如果采⽤默认端⼝,可以使⽤ftp.connect(url)的⽅式直接连接FTP服务器 ftp.login("11111", "11111");// 登录ftp.setFileType(FTP.BINARY_FILE_TYPE);ftp.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);reply = ftp.getReplyCode();if(!FTPReply.isPositiveCompletion(reply)){ftp.disconnect();throw new IOException("ftp登录失败");}for (String str:ftpfilePath.split("/")){ftp.makeDirectory(str);ftp.changeWorkingDirectory(str);}boolean tag = ftp.appendFile(fileName,bufferedInputStream);if(!tag){throw new Exception("保存到FTP失败");}}catch (Exception e){e.printStackTrace();}finally {try {inputStream.close();ftp.logout();} catch (IOException e) {e.printStackTrace();}if(ftp.isConnected()){try {ftp.disconnect();}catch (IOException e){e.printStackTrace();}}}String path = "/"+ftpfilePath+"/"+fileName;// item.write(uploadedFile);map.put("state","SUCCESS");map.put("url",path);map.put("title",orginFileName);map.put("original",orginFileName);}// response.setCharacterEncoding("UTF-8");// response.getWriter().println("上传成功");return map;}//回显图⽚// imgPath = "ftpfile\\upload\\11.png";OutputStream os = null;ftp = new FTPClient();ftp.setConnectTimeout(1000 * 30);//设置连接超时时间ftp.setControlEncoding("utf-8");//设置ftp字符集ftp.enterLocalPassiveMode();//设置被动模式,⽂件传输端⼝设置try {int reply;ftp.connect("11111", 21);// 连接FTP服务器// 如果采⽤默认端⼝,可以使⽤ftp.connect(url)的⽅式直接连接FTP服务器ftp.login("11111", "11111");// 登录ftp.setFileType(FTP.BINARY_FILE_TYPE);ftp.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);reply = ftp.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {ftp.disconnect();throw new IOException("FTP登录失败");}//下载⽂件 FTP协议⾥⾯,规定⽂件名编码为iso-8859-1,所以读取时要将⽂件名转码为iso-8859-1//如果没有设置按照UTF-8读,获取的流是空值nullin = ftp.retrieveFileStream(new String(imgPath.getBytes("UTF-8"), "iso-8859-1"));String picType = imgPath.split("\\.")[1];BufferedImage bufImg = null;bufImg = ImageIO.read(in);os = response.getOutputStream();ImageIO.write(bufImg, picType, os);} catch (IOException e) {e.printStackTrace();} finally {try {in.close();// 在这⾥关闭,保证⼀定要关闭ftp.logout();// 在这⾥登出,保证⼀定要登出} catch (IOException e) {e.printStackTrace();}if (ftp.isConnected()) {try {ftp.disconnect();} catch (IOException ioe) {}}}response.setContentType("image/jpg");}/*** 下载⽂件到浏览器* @param response* @throws IOException*/@RequestMapping("/downloadFile.do")@ResponseBodypublic void downFile(@RequestParam("path")String path, HttpServletResponse response) throws IOException {// 获取ftp信息// 获取⽂件名称String[] strs = path.split("/");String downloadFile = strs[strs.length - 1];try {// 设置⽂件ContentType类型,这样设置,会⾃动判断下载⽂件类型response.setContentType("application/x-msdownload");// 设置⽂件头:最后⼀个参数是设置下载的⽂件名并编码为UTF-8response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(downloadFile, "UTF-8")); // 建⽴连接connectToServer();ftpClient.enterLocalPassiveMode();// 设置传输⼆进制⽂件int reply = ftpClient.getReplyCode();// ftpClient.changeWorkingDirectory("./home/ftp");if(!FTPReply.isPositiveCompletion(reply)) {ftpClient.disconnect();throw new IOException("failed to connect to the FTP Server:"+21);}// 此句代码适⽤Linux的FTP服务器String newPath = new String(path.getBytes("GBK"),"ISO-8859-1");bis = new BufferedInputStream(is);OutputStream out = response.getOutputStream();byte[] buf = new byte[1024];int len = 0;while ((len = bis.read(buf)) > 0) {out.write(buf, 0, len);}out.flush();} catch (Exception e) {e.printStackTrace();} finally {closeConnect();if (bis != null) {try {bis.close();} catch (IOException e) {e.printStackTrace();}}if (is != null) {try {is.close();} catch (IOException e) {e.printStackTrace();}}}} catch (FTPConnectionClosedException e) {logger.error("ftp连接被关闭!", e);throw e;} catch (Exception e) {logger.error("ERR : upload file "+ downloadFile+ " from ftp : failed!", e);}}/*** 连接到ftp服务器*/private void connectToServer() throws Exception {// ftpClient.connect(server,21);if (!ftpClient.isConnected()) {int reply;try {ftpClient=new FTPClient();ftpClient.connect("111111", 21);// 连接FTP服务器// 如果采⽤默认端⼝,可以使⽤ftp.connect(url)的⽅式直接连接FTP服务器ftpClient.login("111111", "111111");// 登录reply = ftpClient.getReplyCode();if (!FTPReply.isPositiveCompletion(reply)) {ftpClient.disconnect();("connectToServer FTP server refused connection.");}}catch(FTPConnectionClosedException ex){logger.error("服务器:IP:"+21+"没有连接数!there are too many connected users,please try later", ex); throw ex;}catch (Exception e) {logger.error("登录ftp服务器【"+21+"】失败", e);throw e;}}}/**** 功能:关闭连接*/public void closeConnect() {try {if (ftpClient != null) {ftpClient.logout();ftpClient.disconnect();}} catch (Exception e) {logger.error("ftp连接关闭失败!", e);} 2.ServerControllerpackage com.wang.controller;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.baidu.ueditor.ActionEnter;import org.springframework.core.io.ClassPathResource;import org.springframework.stereotype.Controller;import org.springframework.util.ClassUtils;import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;//ueditor单独上传的controller@Controllerpublic class ServerController {@RequestMapping("/configNew")public void config(HttpServletRequest request, HttpServletResponse response){response.setContentType("application/json");// String res = ClassUtils.getDefaultClassLoader().getResource("km").getPath();// System.out.println("res:"+res);System.out.println("路径:"+ClassUtils.getDefaultClassLoader().getResource("").getPath());// String rootPath = ClassUtils.getDefaultClassLoader().getResource("../../").getPath() + "static/ueditor/jsp"; String rootPath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "static/ueditor/jsp";System.out.println("root路径:"+rootPath);try {response.setCharacterEncoding("UTF-8");String exec = new ActionEnter(request, rootPath).exec();System.out.println(exec);PrintWriter writer = response.getWriter();writer.write(new ActionEnter(request, rootPath).exec());writer.flush();writer.close();} catch (IOException e) {e.printStackTrace();}}// public void getUEConfig(HttpServletRequest request, HttpServletResponse response){// org.springframework.core.io.Resource res = new ClassPathResource("config.json");// InputStream is = null;// response.setHeader("Content-Type" , "text/html");// try {// is = new FileInputStream(res.getFile());// StringBuffer sb = new StringBuffer();// byte[] b = new byte[1024];// int length=0;// while(-1!=(length=is.read(b))){// sb.append(new String(b,0,length,"utf-8"));// }// String result = sb.toString().replaceAll("/\\*(.|[\\r\\n])*?\\*/","");// JSONObject json = JSON.parseObject(result);// PrintWriter out = response.getWriter();// out.print(json.toString());// } catch (IOException e) {// e.printStackTrace();// }finally {// try {// is.close();// } catch (IOException e) {// e.printStackTrace();// }// }// }} 3.修改ueditor.config.jsvar URL = window.UEDITOR_HOME_URL || getUEBasePath();var server_url = window.location.protocol+"//"+window.location.hostname+":"+window.location.port;/*** 配置项主体。
UEditor编辑器使⽤⽰例1. UEditor下载 UEditor是由百度web前端研发部开发所见即所得富⽂本web编辑器,具有轻量,可定制,注重⽤户体验等特点,开源基于MIT协议,允许⾃由使⽤和修改代码。
下载链接:2. 初始化编辑器2.1 script初始化 HTML代码:<!DOCTYPE html><html><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>UEditor⽰例</title><script type="text/javascript" src="/Plugins/ueditor/ueditor.config.js"></script><script type="text/javascript" src="/Plugins/ueditor/ueditor.all.js"></script></head><body><script id="container" type="text/plain"></script><script type="text/javascript">var ue = UE.getEditor("container");</script></body></html> 效果图:2.2 TextArea初始化 HTML代码:<!DOCTYPE html><html><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>UEditor⽰例</title><script src="/Plugins/ueditor/ueditor.config.js"></script><script src="/Plugins/ueditor/ueditor.all.js"></script></head><body><textarea cols="20" id="Remark" name="Remark" rows="2"></textarea><script type="text/javascript">var editor = new baidu.editor.ui.Editor();editor.render("Remark");</script></body></html>。
ueditor 用法UEditor是一个基于JavaScript的所见即所得的富文本编辑器,可以方便地集成到网页中。
以下是UEditor的用法:1. 引入UEditor的文件:在网页中引入UEditor的核心文件和配置文件。
html<script type="text/javascript" src="ueditor.config.js"></script><script type="text/javascript" src="ueditor.all.min.js"></script>2. 创建一个用于显示编辑器的div元素:html<div id="editor"></div>3. 初始化UEditor实例:javascriptvar ue = UE.getEditor('editor');这将创建一个UEditor实例,并将其绑定到id为"editor"的div元素上。
4. 获取编辑器内容:javascriptvar content = ue.getContent();使用`getContent()`方法可以获取编辑器中的HTML内容。
5. 设置编辑器内容:javascriptue.setContent('这是新的内容');使用`setContent()`方法可以设置编辑器的内容为指定的HTML。
除了上述基本用法外,UEditor还支持各种自定义配置和方法,如设置工具栏、上传图片、自定义菜单等。
详细使用方法和配置可以参考UEditor的官方文档。
Ueditor百度富⽂本编辑器添加h5⼿机端预览功能⼀、需求分析项⽬中⽤到富⽂本编辑器的地⽅很多,富⽂本编辑器⼀般都是在pc后台上,因为前端是⼿机端,因此每次再富⽂本编辑内容保存以后,在⼿机端展⽰的样式和我们在富⽂本中编辑的不太⼀样,因此就需要在编写完内容之后可以模拟⼿机端进⾏预览⼀下,但是后端⽤富⽂本编辑器的地⽅⽐较多,不适合在每个页⾯进⾏开发,因此做成插件功能放⼊ueditor之中的⽅式改动的代价⽐较⼩。
⾸先看下效果⼆、代码先在ueditor.css中添加按钮样式图⽚:路径:ueditor\themes\default\css\ueditor.css/*⼿机预览样式*/.edui-default i-icon{background-image: url("../images/previewMobile.png");}然后在 ueditor\themes\default\images 中添加 iphone-bg.png 和 previewMobile.png 图⽚;在ueditor\themes\default ⽬录下创建 html⽬录,将preview.html页⾯放⼊。
提取码:zhkj在ueditor.config.js中toolbars⾥加⼀个按钮 previewMobiletoolbars: [['source', //源代码'anchor', //锚点'undo', //撤销'redo', //重做'bold', //加粗'indent', //⾸⾏缩进'snapscreen', //截图'italic', //斜体'underline', //下划线'strikethrough', //删除线'subscript', //下标'fontborder', //字符边框'superscript', //上标'formatmatch', //格式刷'blockquote', //引⽤'pasteplain', //纯⽂本粘贴模式'selectall', //全选'print', //打印'preview', //预览'horizontal', //分隔线'removeformat', //清除格式'time', //时间'date', //⽇期'unlink', //取消链接'insertrow', //前插⼊⾏'insertcol', //前插⼊列'mergeright', //右合并单元格'mergedown', //下合并单元格'deleterow', //删除⾏'deletecol', //删除列'splittorows', //拆分成⾏'splittocols', //拆分成列'splittocells', //完全拆分单元格'deletecaption', //删除表格标题'inserttitle', //插⼊标题'mergecells', //合并多个单元格'deletetable', //删除表格'cleardoc', //清空⽂档'insertparagraphbeforetable', //"表格前插⼊⾏"'insertcode', //代码语⾔'fontfamily', //字体'fontsize', //字号'paragraph', //段落格式'simpleupload', //单图上传'insertimage', //多图上传'edittable', //表格属性'edittd', //单元格属性'link', //超链接'emotion', //表情'spechars', //特殊字符'searchreplace', //查询替换// 'map', //Baidu地图// 'gmap', //Google地图'insertvideo', //视频'help', //帮助'justifyleft', //居左对齐'justifyright', //居右对齐'justifycenter', //居中对齐'justifyjustify', //两端对齐'forecolor', //字体颜⾊'backcolor', //背景⾊'insertorderedlist', //有序列表'insertunorderedlist', //⽆序列表'fullscreen', //全屏'directionalityltr', //从左向右输⼊'directionalityrtl', //从右向左输⼊'rowspacingtop', //段前距'rowspacingbottom', //段后距// 'pagebreak', //分页'insertframe', //插⼊Iframe'imagenone', //默认'imageleft', //左浮动'imageright', //右浮动'attachment', //附件'imagecenter', //居中// 'wordimage', //图⽚转存'lineheight', //⾏间距'edittip ', //编辑提⽰'customstyle', //⾃定义标题'autotypeset', //⾃动排版// 'webapp', //百度应⽤'touppercase', //字母⼤写'tolowercase', //字母⼩写'background', //背景'template', //模板'scrawl', //涂鸦'music', //⾳乐'inserttable', //插⼊表格'drafts', // 从草稿箱加载'charts', // 图表'previewMobile' // 预览]]添加中⽂说明(⿏标放上去中⽂显⽰)labelMap:{'previewMobile':'⼿机预览'}在ueditor.all.js中 btnCmds 加⼊ previewMobile//为⼯具栏添加按钮,以下都是统⼀的按钮触发命令,所以写在⼀起var btnCmds = ['undo', 'redo', 'formatmatch','bold', 'italic', 'underline', 'fontborder', 'touppercase', 'tolowercase','strikethrough', 'subscript', 'superscript', 'source', 'indent', 'outdent','blockquote', 'pasteplain', 'pagebreak','selectall', 'print','horizontal', 'removeformat', 'time', 'date', 'unlink','insertparagraphbeforetable', 'insertrow', 'insertcol', 'mergeright', 'mergedown', 'deleterow','deletecol', 'splittorows', 'splittocols', 'splittocells', 'mergecells', 'deletetable', 'drafts','previewMobile'];然后在 getEditor和 ui.Editor 中添加创建遮罩层代码在这两个⾥⾯都加是因为使⽤不规范问题,ue推荐⼤家在获得ueditor时使⽤⼯⼚⽅法 getEditor,但是实际在使⽤时,有的也会⽤ new UE.ui.Editor() 来获得ue对象,所以在两个⽅法中都加⼊代码。
1.1跟我学百度UEditor在线文本编辑器及应用实例——在J2EE Web应用系统中如何配置UEditor在线文本编辑器1.1.1UEditor在线文本编辑器的浏览器前端配置相关的属性选项1、修改UEditor在线文本编辑器配置的两种方式(1)第一种方法是通过重新定义ueditor.config.js配置文件中的如下的属性选项window.UEDITOR_HOME_URL的值在引用editor_config.js文件之前,在JavaScript程序代码中需要重新设置ueditor.config.js 配置文件中的window.UEDITOR_HOME_URL变量的值为“编辑器资源文件根路径”,如下为代码示例:<script type="text/javascript">window.UEDITOR_HOME_URL = "./baiduUEditor/";</script>一般都采用网站根目录的相对路径,也就是以斜杠开头的形如"/myProject/ueditor/"这样的路径。
(2)第二种方法是在对UEditor在线文本编辑器进行对象实例化的时传入相关的属性选项的配置参数,如下为代码示例:var ue = UE.getEditor('ueditorTextAreaID', {toolbars: [['fullscreen', 'source', 'undo', 'redo', 'bold']],autoHeightEnabled: true,autoFloatEnabled: true});2、在引用UEditor在线文本编辑器的页面中重新定义window.UEDITOR_HOME_URL (1)采用相对目录路径的示例<script type="text/javascript">window.UEDITOR_HOME_URL = "./baiduUEditor/";</script><script type="text/javascript" src="./baiduUEditor/ueditor.config.js"></script><script type="text/javascript" src="./baiduUEditor/ueditor.all.min.js"></script><script type="text/javascript" charset="utf-8"src="./baiduUEditor/lang/zh-cn/zh-cn.js"></script> 注意UEDITOR_HOME_URL、config、all这三个顺序不能改变。
1.1跟我学百度UEditor在线文本编辑器及应用实例——在J2EE Web应用系统中如何应用UEditor在线文本编辑器1.1.1在J2EE Web应用系统中应用UEditor在线文本编辑器1、解压所下载的UEditor在线文本编辑器的系统库的压缩包如下示图为解压所下载的压缩包文件后的相关文件目录,包含有多个不同功能的子目录和相关的程序文件。
2、解压后的各个目录的相关功能说明(1)dialogs弹出对话框对应的资源和JS文件所在的目录。
(2)jsp涉及到服务器端操作的后台文件的目录,由于本文档下载的是J2EE JSP系统平台,因此为JSP目录。
(3)lang编辑器国际化显示的文件所在的目录,其中的zh-cn代表中文,而en代表英文。
(4)themesCSS样式定义的样式图片和样式文件(提供PHP、JSP和.Net三种不同的版本,涉及到不同的服务器端操作的后台文件,根据在下载时所选择的不同系统平台的版本,这里也会不同)所在的目录,本文档下载的是J2EE JSP版本。
(5)third-party第三方插件(包括代码高亮,源码编辑等组件)等程序文件所在的目录。
(6)editor_all.js用于发布版本的UEditor系统库文件。
(7)editor_all_min.jseditor_all.js文件的压缩版,建议在正式部署时才采用。
(8)editor_config.js编辑器的配置文件,建议和编辑器实例化页面置于同一目录。
(9)editor_parse.js编辑的内容显示页面引用,会自动加载表格、列表、代码高亮等样式。
(10)ueditor.parse.min.jseditor_parse.js文件的压缩版,建议在正式部署时才采用。
3、创建本示例所需要的HTML页面(1)首先就是引入两个js文件分别为editor_config.js和editor_all.js,但editor_config.js需要放在editor_all.js的前面。
ueditor使用方法一、概述ueditor是一个基于JavaScript的富文本编辑器,可以用于网页中的文本编辑、内容排版等功能。
本文将介绍ueditor的使用方法,包括安装、配置和常用功能的操作。
二、安装1. 下载ueditor的压缩包,解压到项目的静态资源目录下。
2. 在HTML页面中引入ueditor的核心文件和配置文件,如:```<script type="text/javascript" src="ueditor/ueditor.config.js"></script><script type="text/javascript" src="ueditor/ueditor.all.min.js"></script>```3. 创建一个textarea元素,用于ueditor的实例化:```<textarea id="editor" name="content" style="width:100%;height:300px;"></textarea>```4. 在JavaScript中实例化ueditor编辑器:```var editor = UE.getEditor('editor');```三、配置1. ueditor的配置可以通过修改ueditor.config.js文件来实现。
2. 可以根据实际需求,调整编辑器的工具栏按钮、菜单项、字体、颜色等样式。
3. 配置文件中还可以设置上传图片、视频等媒体文件的服务器地址和路径。
4. 可以通过配置文件中的事件监听函数,实现自定义的操作和处理逻辑。
四、常用功能1. 文本编辑:ueditor提供了常见的文本编辑功能,如加粗、斜体、下划线、删除线等。
vue集成百度UEditor富⽂本编辑器使⽤教程在前端开发的项⽬中,难免会遇到需要在页⾯上集成⼀个富⽂本编辑器。
那么,如果你有这个需求,希望可以帮助到你。
vue是前端开发者所追捧的框架,简单易上⼿,但是基于vue的富⽂本编辑器⼤多数太过于精简。
于是我将百度富⽂本编辑器放到vue项⽬中使⽤。
效果图如下废话不多说。
1、使⽤vue-cli构建⼀个vue项⽬。
然后下载UEditor源码,把项⽬复制到vue项⽬的static⽂件下。
⽬的是让服务可以访问到⾥⾯的⽂件,打开UEditor⽬录⽂件。
这⾥下载的是jsp版本的。
⽂件名字没有更改过。
打开⾥⾯的ueditor.config.js⽂件找到serverUrl把这⾏代码注释了。
这个代码是⽤来上传图⽚的后台地址。
如果不注释了会请求报错。
编辑器跑起来再做服务配置修改地址。
2、在.vue⽂件中引⼊主要js⽂件import ‘../../static/utf8-jsp/ueditor.config'import ‘../../static/utf8-jsp/ueditor.all';import ‘../../static/utf8-jsp/lang/zh-cn/zh-cn';3、在data中申明⼀个变量存储UEditor的实例⽅便在vue的其他地⽅使⽤,然后申明⼀个变量存储⼿动获取的编辑器⾥⾯的内容,再什么⼀个变量存储初始化时要写⼊编辑器的内容。
三个变量。
如果操作得当。
可以减少变量的时候。
这是笨办法4、在vue的mounted钩⼦函数中调⽤编辑器的⽅法⽣成实例存储到刚刚申明的变量中,在实例中传⼊参数。
第⼀个是id,id是⽣成编辑器的div的id。
第⼆个参数是⼀个对象。
对象内容是对编辑器的配置。
如资源访问路径,toolbars内容配置。
5、在html部分写⼀个div标签<div id="editor" type="text/plain" style="width:1024px;height:500px;"></div>6、然后配置资源路径。
百度编辑器 UEditor
演示地址:/website/onlinedemo.html Ueditor 是由百度 web 前端研发部开发所见即所得的编辑器,具有轻量,可定制,注重 用户体验等特点。
Ueditor 基于 BSD 开源协议,除了具有代码精简、加载迅速的轻量级特质 外,还采用了分层理念,使开发者可以根据实际应用和需求自由定制。
Ueditor 编辑器划分为了三层架构。
其中,核心层为开发者提供了诸如 range、 selection、 domUtils 类的底层 API 接口, 中间的命令插件层不仅提供了大量的基础 command, 还允许开发者基于核心层进行 command 命令的开发, 而面向用户端的界面层则可以提供自由 定制的用户交互界面。
Ueditor 开源编辑器这种拥有可配性的模式,令开发者能够根据自身 需要接入任何一层进行开发。
完整版的部署与体验
一、官网上下载完整源码包,解压到任意目录,解压后的源码目录结构如下所示: _examples:编辑器完整版的示例页面 _demos:编辑器的各种使用案例 dialogs:弹出对话框对应的资源和 JS 文件 themes:样式图片和样式文件 server:涉及到服务器端操作的 PHP、JSP 等文件 third-party:第三方插件 editor_all.js:_src 目录下所有文件的打包文件 editor_all_min.js:editor_all.js 文件的压缩版,建议在正式部署时才采用 editor_config.js:编辑器的配置文件,建议和编辑器实例化页面置于同一目录 二、部署 UEditor 到实际项目(UETest)中的步骤:
图表 1 第一步:在项目的任一文件夹中建立一个用于存放 UEditor 相关资源和文件的目录,此
处在项目根目录下建立,起名为 ueditor。
第二步:拷贝源码包中的 dialogs、themes、third-party、editor_all.js 和 editor_config.js 到 ueditor 文夹中。
其中,除了 ueditor 目录之外的其余文件均为具体项目文件,此处所列仅供 示例。
第三步:为简单起见,此处将以根目录下的 index.jsp 页面作为编辑器的实例化页面,用 来展示 UEditor 的完整版效果。
在 index.jsp 文件中,首先导入编辑器需要的三个入口文件, 示例代码如下: <HEAD> <SCRIPTtype=text/javascriptsrc="ueditor/editor_config.js"></SCRIPT> <SCRIPTtype=text/javascriptsrc="ueditor/editor_all.js"></SCRIPT> <LINKrel=stylesheethref="ueditor/themes/default/ueditor.css"> 第四步:然后在 index.jsp 文件中创建编辑器实例及其 DOM 容器。
具体代码示例如下: <DIVid=myEditor></DIV> <SCRIPTtype=text/javascript> var editor = new baidu.editor.ui.Editor(); editor.render("myEditor"); </SCRIPT> 最后一步: 在/UETest/ueditor/ editor_config.js 中查找 URL 变量配置编辑器在你项目中 的路径。
//强烈推荐以这种方式进行绝对路径配置 URL= window.UEDITOR_HOME_URL||"/UETest/ueditor/"; 至此,一个完整的编辑器实例就已经部署到咱们的项目中了!在浏览器中输入 http://localhost/UETest 运行下试试 UE 强大的功能吧!
三、注意事项 1.在引用 editor_config.js 时,最好先于 editor_all.js 加载,否则特定情况下可能会出现报 错。
2.若希望给编辑器赋初值,请将上面描述 index.jsp 的 div 换成初始内容 3. 需要注意的是编辑器资源文件根路径。
它所表示的含义是: 以编辑器实例化页面为当 前路径,指向编辑器资源文件(即 dialog 等文件夹)的路径。
鉴于很多同学在使用编辑器的 时候出现的种种路径问题,此处强烈建议大家使用"相对于网站根目录的相对路径"进行配 置。
"相对于网站根目录的相对路径"也就是以斜杠开头的形如"/UETest/ueditor/"这样的路径。
此外如果你使用的是相对路径,例如"ueditor/"(相对于图表1路径结构) 如果站点中有多个不在同一层级的页面需要实例化编辑器,且引用了同一 UEditor 的时 候,可能不适用于每个页面的编辑器。
因此,UEditor 提供了针对不同页面的编辑器可单独 配置的根路径,具体来说,在需要实例化编辑器的页面最顶部写上如下代码即可。
当 然 , 需 要 令 此 处 的 URL 等 于 对 应 的 配 置 。
window.UEDITOR_HOME_URL ="/xxxx/xxxx/";
自定义配置
UEditor 除了具有功能强大、可定制等优点外,还始终将优化编辑操作、提升用户体验 摆在了很重要的位置。
在这一点上,除了对编辑器功能、性能、实现细节等不断地改进和追 求创新之外,众多灵活而个性化的自定义配置也充分体现了这个特点。
通过修改配置,用户 几乎可以完全地改变编辑器的外观和行为。
从配置本身的优先级来看,UEditor 的配置可以分为系统默认配置和用户自定义配置两 种类型。
系统默认配置分散在各个对应的核心或者插件文件之中,对用户不可见。
当用户注释掉 自定义配置时起作用。
用户自定义配置包括两种类型,一种位于 editor_config.js 文件之中,优先级高于系统默 认配置;另一种位于实例化编辑器时传入的参数中,优先级最高。
默认情况下,UEditor 在 editor_congfig.js 注释掉了所有可以省略的配置项,采用系统默 认配置, 若取消注释, 则以该配置项为准; 未注释的配置项要求用户必需按照项目实际填写。
配置文件中,有很详细的注解和例子,这里就不写了.
增加一个普通按钮
下面就让我们从最简单的功能开始 UEditor 的二次开发之旅: 在工具栏上增加一个按钮, 点击按钮的时候出现一个 alert 提示。
第一步:找到 editor_congfig.js 文件中的 toolbars 参数,增加一个“showmsg”字符串,对 应着添加一个 labelMap,用于鼠标移上按钮时的提示。
toolbars:[ [...,'searchreplace','help','showmsg'] ], labelMap:{ ..., 'help':'帮助', 'showmsg':'显示提示消息' }
第二步:找到根目录下的 editor_all.js 文件中的
btnCmds
数组,在其中同样增加一
个“showmsg”字符串。
第三步:清空缓存刷新下页面吧!工具栏的对应位置是否出现了一个自己定义的按钮 呢?如下图所示:
第四步:找到 themes/default/ueditor.css 文件,增加一条样式定义:
.edui-for-showmsg .edui-icon{ background-position:-700px-40px; }
完成后刷新浏览器,可以看到此时图标已经显示为如下图所示:
此 处 的 样 式 定 义 了 showmsg 图 标 在 UEditor 默 认 的 精 灵 Icon 图 片 (themes/default/images/icons.png)中的位置偏移。
如需更改成另外图标,只需添加图标到 该图片文件中,然后设置偏移值即可。
第五步:到此为止,在 UI 层面已经完成了一个工具栏图标的显示和各种状态变化的逻 辑,但是我们发现点击按钮之后毫无反应。
那是必然的,我们还必须为该按钮绑定属于它自 己的事件处理方法。
实质上,此时一个默认的事件处理方法已经被 UEditor 绑定到按钮上了,只不过由于我 们还没有定义该方法的具体内容,所以点击之后无任何变化。
下面我们就来定义该方法的具体内容: 找到根目录下的 editor_all.js 文件,然后在该文件最后输入如下代码:
mands['showmsg'] = { execCommand :function(){ alert("Hello,UE developer!"); }
}; 也可以在加载编辑器的页面上加入上面代码同样可以弹出警告 框;
再次刷新页面点击一下按钮吧!
。