TinyMce富文本编辑器配置说明

TinyMce使用

npm install tinymce -S

参考于
Tinymce中文文档
Tinymce官方文档
Tinymce github地址
tinymce版本为5.30+

相关配置请参考src/components/tinymce目录,本文项目github地址

tinymce 配置说明

{
width: '100%', //  设置富文本编辑器宽度
height: '100%', //  设置富文本编辑器高度
menubar: false, // 设置富文本编辑器菜单, 默认true
branding: false, // 关闭底部官网提示 默认true
statusbar: true, // 显示底部状态栏 默认true
readonly: false, // 设置只读属性 默认 false
resize: false, // 调节编辑器大小 默认 true
autosave_ask_before_unload: true, // 阻止有内容时浏览器阻塞行为, 默认 true  需引入插件autosave
autosave_interval: '3s', // 设置自动保存为草稿时间 单位只能为s 需引入插件autosave
autosave_prefix: `editor_${_this.$route.path}`, // 设置自动保存为草稿时前缀 本地localStorage中存储  需引入插件autosave
autosave_retention: '300m', // 自动草稿的有效期 单位只能为m  需引入插件autosave
contextmenu: 'copy paste cut link', // 上下文菜单 默认 false
draggable_modal: true, // 模态框拖动 默认false
placeholder: '开始编写吧', // 占位符
theme: 'silver', // 主题 必须引入
skin_url: '/tinymce/skins/ui/oxide', // 主题路径
icons: 'custom',  // 自定义图标名称
icons_url: '/tinymce/icons/icons.js', // 自定义图标路径
language_url: '/tinymce/langs/zh_CN.js', // 中文化 默认为英文
language: 'zh_CN', // 设置富文本编辑器语言
content_css: `/tinymce/skins/content/default`, // 富文本编辑器内容区域样式
content_style: 'body, p{font-size: 12px}', // 为内容区编辑自定义css样式
fontsize_formats: '12px 14px 16px 18px 20px 22px 24px 26px 36px 48px 56px', // 工具栏自定义字体大小选项
font_formats: "微软雅黑='微软雅黑'; 宋体='宋体'; 黑体='黑体'; 仿宋='仿宋'; 楷体='楷体'; 隶书='隶书'; 幼圆='幼圆'; 方正舒体='方正舒体'; 方正姚体='方正姚体'; 等线='等线'; 华文彩云='华文彩云'; 华文仿宋='华文仿宋'; 华文行楷='华文行楷'; 华文楷体='华文楷体'; 华文隶书='华文隶书'; Andale Mono=andale mono,times; Arial=arial; Arial Black=arial black;avant garde; Book Antiqua=book antiqua;palatino; Comic Sans MS=comic sans ms; Courier New=courier new;courier; Georgia=georgia; Helvetica=helvetica; Impact=impact;chicago; Symbol=symbol; Tahoma=tahoma;arial; sans-serif; Terminal=terminal,monaco; Times New Roman=times new roman,times; Trebuchet MS=trebuchet ms; Verdana=verdana;geneva; Webdings=webdings; Wingdings=wingdings", // 工具栏自定义字体选项
toolbar_sticky: true, // 粘性工具栏 默认false (在向下滚动网页直到不再可见编辑器时,将工具栏和菜单停靠在屏幕顶部)
toolbar_mode: 'sliding', // sliding生效条件toolbar必须为字符串,且有'|'区分,不能为数组
plugins: ['autosave help textpattern lineheight'], // 插件配置
toolbar: 'fontselect styleselect fontsizeselect restoredraft undo redo | bold italic underline strikethrough subscript superscript removeformat forecolor backcolor lineheight align outdent indent help', // 工具栏配置
images_upload_handler: (blobInfo, success, failure) => {
  // 发送请求, 获取图片路径后, 将路径传给success
  success('http://pic.sc.chinaz.com/files/pic/pic9/202005/apic25209.jpg')
}, // 图片上传函数 需引入插件image
image_advtab: true, // 为上传图片窗口添加高级属性 需引入插件image
paste_data_images: true, // 粘贴data格式的图像 需引入插件paste 谷歌浏览器无法粘贴
paste_as_text: true, // 默认粘贴为文本 需引入插件paste 谷歌浏览器无法粘贴
templates: [{ title: '标题', description: '描述', content: '内容' }], // 内容模板 需引入插件templates
visual: false, // 颜色辅助
quickbars_selection_toolbar: 'bold italic underline strikethrough | link h2 h3 h4 blockquote', // 设置 快速选择 触发提供的工具栏 需引入插件  默认 'alignleft aligncenter alignright' 设置为false禁用
quickbars_insert_toolbar: 'quickimage quicktable', // 设置 快速插入 触发提供的工具栏 需引入插件quickbars 默认 quickimage quicktable 设置为false禁用
textpattern_patterns: [
  { start: '*', end: '*', format: 'italic' },
  { start: '**', end: '**', format: 'bold' },
  { start: '#', format: 'h1' },
  { start: '##', format: 'h2' },
  { start: '###', format: 'h3' },
  { start: '####', format: 'h4' },
  { start: '#####', format: 'h5' },
  { start: '######', format: 'h6' },
  { start: '1. ', cmd: 'InsertOrderedList' },
  { start: '* ', cmd: 'InsertUnorderedList' },
  { start: '- ', cmd: 'InsertUnorderedList' }
], // 快速排版  类似于markdown 需引入插件textpattern
init_instance_callback: editor => { // 初始化结束后执行, 里面实现双向数据绑定功能
  if (_this.value) {
    editor.setContent(_this.value)
  }
  _this.hasInit = true
  editor.on('Input undo redo Change execCommand SetContent', (e) => {
    _this.hasChange = true
    // editor.getContent({ format: ''text }) // 获取纯文本
    _this.$emit('change', editor.getContent())
  })
},
setup: (editor) => { // 初始化前执行
  // 监听鼠标按下事件
  editor.on('keydown', (e) => {
    if (e.keyCode === 9) {
      if (e.shiftKey) {
        editor.execCommand('Outdent')
      } else {
        editor.execCommand('Indent')
      }
      e.preventDefault()
      e.stopPropagation()
    }
  })
  // 注册自定义上传按钮
  editor.ui.registry.addButton('upload', {
    text: `<i class="el-icon-upload" style="font-size: 24px"></i>`,
    tooltip: '自定义上传',
    onAction: () => {
      _this.config.show = true
    }
  })
  // 注册获取内容按钮
  editor.ui.registry.addButton('submit', {
    text: `<i class="el-icon-position" style="font-size: 18px"></i>`,
    tooltip: '获取内容',
    onAction: () => {
      console.log(editor.getContent())
    }
  })
  // 注册清空内容按钮
  editor.ui.registry.addButton('empty', {
    text: `<i class="el-icon-close" style="font-size: 18px"></i>`,
    tooltip: '清空内容',
    onAction: () => {
      _this.content = ''
      editor.setContent('')
    }
  })}
}

tinymce toolbar相关补充

toolbar配置 功能 所需插件
restoredraft 恢复上次的草稿 无需引入插件
undo 撤销 无需引入插件
redo 恢复 无需引入插件
fontselect 字体选择 无需引入插件
styleselect 格式选择 无需引入插件
fontsizeselect 字号选择 无需引入插件
cut 剪切 无需引入插件
copy 复制 无需引入插件
selectall 全选 无需引入插件
bold 粗体 无需引入插件
italic 斜体 无需引入插件
underline 下划线 无需引入插件
strikethrough 删除线 无需引入插件
subscript 下标 无需引入插件
superscript 上标 无需引入插件
removeformat 清除格式 无需引入插件
forecolor 文字颜色 无需引入插件
backcolor 背景颜色 无需引入插件
align 对齐方式 无需引入插件
outdent 增加缩进 无需引入插件
indent 减少缩进 无需引入插件
paste 粘贴 paste
ltr 文字方向从左向右 directionality
rtl 文字方向从右向左 directionality
anchor 锚点 anchor
lineheight 锚点 lineheight
bullist 符号列表 advlist,lists(advlist依赖于lists)
numlist 数字列表 advlist,lists(advlist依赖于lists)
insertdatetime 插入时间/日期 insertdatetime
table 表格 table
tabledelete 删除表格 table
tableprops 表格属性 table
tablerowprops 行属性 table
tablecellprops 单元格属性 table
tableinsertrowbefore 在上方插入 table
tableinsertrowafter 在下方插入 table
tabledeleterow 删除行 table
tableinsertcolbefore 在左侧插入 table
tableinsertcolafter 在右侧插入 table
tabledeletecol 删除列 table
hr 水平分割线 hr
nonbreaking 插入不间断空格 nonbreaking
pagebreak 分页符 pagebreak
template 内容模板 template
charmap 特殊字符 charmap
emoticons 表情插件 emoticons
image 插入编辑图片 image
quickimage 快捷插入图片 image
media 插入/编辑媒体资源 media
link 超链接 link
toc 目录生成器 toc
code 编辑源码 code
quickbars 快速工具栏 quickbars
codesample 代码示例 codesample
fullpage 文档属性 fullpage
print 打印 print
searchreplace 查找替换 searchreplace
preview 预览 preview
fullscreen 全屏 fullscreen
wordcount 字数统计 wordcount
visualblocks 显示区块边框 visualblocks
visualchars 显示不可见字符 visualchars
help 帮助 help

tinymce插件

来源于Tinymce中文文档

plugin 功能 备注
advlist 高级列表插件 官方地址
anchor 锚点插件 官方地址
autolink 自动链接插件 官方地址
autoresize 编辑器大小自适应 官方地址
autosave 自动存稿 官方地址
bbcode -- 官方地址
charmap 特殊字符插件 官方地址
code 编辑源码 官方地址
codesample 代码示例插件 官方地址
directionality 文字方向 官方地址
emoticons 表情插件 官方地址
fullpage 文档属性 官方地址
fullscreen 全屏 官方地址
help 帮助 官方地址
hr 水平分割线 官方地址
image 插入编辑图片 官方地址
importcss 引入css 官方地址
media 插入编辑媒体 官方地址
insertdatetime 插入当前日期时间 官方地址
legacyoutput 输出HTML4 官方地址
link 超链接 官方地址
lists 列表插件 官方地址
nonbreaking 插入不间断空格 官方地址
noneditable 不可编辑元素 官方地址
pagebreak 插入分页符 官方地址
paste 粘贴插件 官方地址
preview 预览 官方地址
print 打印 官方地址
quickbars 快速工具栏 官方地址
save 保存 官方地址
searchreplace 查找替换 官方地址
spellchecker 拼写检查 官方地址
tabfocus tab切入切出 官方地址
table 表格插件 官方地址
template 内容模板 官方地址
textcolor 文字颜色 无需引入,已集成官方地址
textpattern 快速排版 官方地址
toc 目录生成器 官方地址
visualblocks 显示块元素范围 官方地址
visualchars 显示不可见字符 官方地址
wordcount 字数统计 官方地址
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342