# layui-tinymce **Repository Path**: idotnetcn/layui-tinymce ## Basic Information - **Project Name**: layui-tinymce - **Description**: layui的富文本编辑器插件(tinymce)封装 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 68 - **Created**: 2023-11-01 - **Last Updated**: 2023-11-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # layui-tinymce ## 本项目已在公司项目中稳定使用,固暂停维护,请酌情使用 ### tinymce更新方式 若需要使用最新版的tinymce可自行到官网下载,替换layui_exts/tinymce/tinymce目录 [在线预览](http://chick1993.gitee.io/layui-tinymce/) | [Layui论坛](https://fly.layui.com/jie/63668/) | [tinymce中文文档](http://tinymce.ax-z.cn/) ## 更新 2021.01.04 tinymce更新到5.6.2 2020.11.06 tinymce更新到5.5.1,上传图片时支持自定义字段名、支持同时上传其他数据
2020.08.24 tinymce更新到5.4.2 ## 食用 食用方式可参考tinymce官方文档 ### 引入编辑器 ``` layui.extend({ tinymce: '{/}./tinymce/tinymce' }).use(['tinymce'], function () { var t = layui.tinymce // code ... // 后面无特殊说明,其它代码均写在此处 // ... }) ``` ### 基础方法 #### 创建 t.render(option,load_callback) ``` t.render({ elem: "#edit" // 支持tinymce所有配置 },(opt, edit)=>{ // 加载完成后回调 opt 是传入的所有参数 // edit是当前编辑器实例,等同于t.get返回值 }); ``` #### 重载 t.reload(option,load_callback) ``` // 方式一 t.reload({ elem:'#edit' // 除elem外,所有参数都可以重新设置 },(opt, edit) => { //重载完成后回调函数,会把所有参数回传, //重载仅仅重新渲染编辑器,不会清空textarea }) // 方式二 t.reload('#edit',{ // 除elem外,所有参数都可以重新设置 },(opt, edit) => { }) ``` #### 编辑器实例 t.get(id) ``` // 如果页面只有一个编辑器,等同于官方的tinymce.activeEditor // 如果页面有多个编辑器,等同于官方tinymce.editors[id] var edit = t.get('#edit') ``` #### 获取内容 edit.getContent(option) ``` // 获取编辑器HTML内容 edit.getContent() // 获取编辑器文本内容 edit.getContent({format:'text'}) ``` #### 插入内容 edit.insertContent(html) ``` edit.insertContent('插入内容') ``` #### 设置内容 edit.setContent(html) ``` edit.setContent('设置内容') // 清空编辑器,将内容设置为空字符串即可 edit.setContent('') ``` #### 清空内容 ``` edit.resetContent() ``` #### 销毁 edit.destroy() ``` edit.destroy() ``` ### 图片上传 #### 配置上传接口 ##### 全局修改 layui_exts\tinymce\tinymce.js ``` var settings = { images_upload_url:'http(s)://yoursite/apipath' // ... } ``` ##### 初始化时传入 ``` t.render({ images_upload_url:'http(s)://yoursite/apipath' // ... }) ``` #### 默认上传 ``` // 上传配置 t.render({ elem: "#edit" ,images_upload_url:'http(s)://yoursite/apipath'//配置上传接口 ,form:{ name:'avatar'//配置上传文件的字段名称 ,data:{ key:'value', ... } //其他需要一起上传的数据 } }); // 如果没有做任何修改, // layui-admin中以admin设置为准;单独引用默认的后端返回数据格式需要如下 // {"code": 0, "msg": "success", "data": "/demo/demo.jpg"}, // code-等于0表示成功,msg-返回的消息,data-返回给前端的图片地址 ``` #### 自定义上传 ``` // 回调函数 参数1:上传的文件数据,参数2:上传成功回调,参数3:上传异常回调 t.render({ elem: "#edit" ,images_upload_handler:function(blobInfo, succFun, failFun){ // 你的代码 ... } }) ``` ### 高级 #### 事件监听 查看[原版文档](https://www.tiny.cloud/docs-4x/advanced/events/) ``` t.render({ elem: "#edit" , height: 200 , init_instance_callback : function(ed) { ed.on('Click', function (e) { // 监听编辑器内部的点击事件 }); } }); ``` ##### 原生事件(区分大小写) | 事件 | 描述 | | --- | --- | | Click | 单击编辑器时触发 | | DblClick | 双击编辑器时触发 | | MouseDown | 在编辑器中按下鼠标按钮时触发 | | MouseUp | 在编辑器中释放鼠标按钮时触发 | | MouseMove | 在编辑器中移动鼠标时触发 | | MouseOver | 鼠标移入时触发 | | MouseOut | 鼠标移出时触发 | | MouseEnter | 当鼠标进入编辑器时触发 | | MouseLeave | 当鼠标离开编辑器时触发 | | KeyDown | 在编辑器中按某个键时触发 | | KeyPress | 在编辑器中按下某个键时触发 | | KeyUp | 在编辑器中释放键时触发 | | ContextMenu | 在编辑器中调用上下文菜单时触发 | | Paste | 在编辑器中完成粘贴时触发 | ##### 编辑器事件(区分大小写) | 事件 | 描述 | | --- | --- | | Init | 在编辑器初始化时触发 | | Focus | 当编辑器聚焦时触发 | | Blur | 编辑器失去焦点时触发 | | BeforeSetContent | 在内容设置之前触发 | | SetContent | 在内容设置时触发 | | GetContent | 在获取内容时触发 | | PreProcess | 在序列化编辑器中的内容时触发 | | PostProcess | 在提交编辑器中的内容时触发 | | NodeChange | 更改编辑器中的选择时触发 | | Undo | 当内容恢复到以前的状态时触发 | | Redo | 还原撤消事件时触发 | | Change | 内容改变时触发 | | Dirty | Fires when editor contents are being considered dirty | | Remove | 删除编辑器时触发 | | ExecCommand | 在执行命令后触发 | ### 更多配置 > [中文配置文档](http://tinymce.ax-z.cn/configure/integration-and-setup.php) > [官方文档(英语)](https://www.tiny.cloud/docs/) ### 常见问题 ##### Q1. 在弹窗里面使用时,菜单定位在弹窗下面怎么办 > layui_exts\tinymce\tinymce\skins\ui\oxide\skin.min.css 这个文件里的所有大于1的z-index后面加五个0