欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > vue2 使用 tinymce富文本编辑器

vue2 使用 tinymce富文本编辑器

2024/10/24 10:18:43 来源:https://blog.csdn.net/Z18834071903/article/details/139359769  浏览:    关键词:vue2 使用 tinymce富文本编辑器

注意:
在vue2中使用tinymce有版本限制的,最新版都是支持v3的,官方也说明了;
vue2中不能使用@tinymce/tinymce-vue 为4以上的版本;

使用步骤:

1、vue项目中安装 tinymce;
npm install tinymce@5.1.0 -S
npm install @tinymce/tinymce-vue@3.0.1 -S

2、将富文本编译器封装成组件;
在src/components目录下新建一个tinymce文件夹(每个文件的代码在文章末尾提供)
在这里插入图片描述

3、将组件引入到页面中进行使用;
哪个页面使用富文本编译器 就在哪个页面引入组件;

<tinymce v-model="addContent"@input="(info) => tinymceInput(info)"id="tinymceId"
></tinymce>import tinymce from '@/components/tinymce/index.vue' // 注意引入路径
components: { tinymce },data () {return {addContent: '',}
},
methods: {tinymceInput (info) {console.log(info,'info------------');},
},

注意:可能会遇到的问题
import “tinymce/icons/default” 路径找不到需要升级tinymce版本
解决方法:
终端执行:npm i tinymce -S

代码:

index.vue

<template><div class="tinymce-editor"><editor:id="id"v-model="myValue":init="init":disabled="disabled"@onClick="onClick"></editor></div>
</template><script>
// 引入组件
import tinymce from 'tinymce'
import editor from '@tinymce/tinymce-vue'// 引入富文本编辑器主题的js和css
import 'tinymce/skins/content/default/content.css'
import 'tinymce/themes/silver'
import 'tinymce/icons/default/icons' // 解决了icons.js 报错问题,不用定制icon可以忽略// 编辑器扩展插件plugins
import 'tinymce/plugins/paste' // 粘贴插件
import 'tinymce/plugins/image' // 上传图片插件
import 'tinymce/plugins/media'// 插入视频插件
import 'tinymce/plugins/link' // 超链接
import 'tinymce/plugins/code' // 源码
import 'tinymce/plugins/table' // 插入表格插件
import 'tinymce/plugins/lists' // 列表插件
import 'tinymce/plugins/wordcount' // 字数统计插件
import 'tinymce/plugins/preview' // 预览// import 'tinymce/plugins/table'
import 'tinymce/plugins/lists'
import 'tinymce/plugins/colorpicker'
import 'tinymce/plugins/textcolor'
import "tinymce/plugins/code";
import "tinymce/plugins/link";
import "tinymce/plugins/advlist";
import "tinymce/plugins/anchor";
import "tinymce/plugins/codesample";
import "tinymce/plugins/hr";
import "tinymce/plugins/fullscreen";
import "tinymce/plugins/textpattern";
import "tinymce/plugins/searchreplace";
import "tinymce/plugins/autolink";
import "tinymce/plugins/directionality";
import "tinymce/plugins/visualblocks";
import "tinymce/plugins/visualchars";
import "tinymce/plugins/template";
import "tinymce/plugins/charmap";
import "tinymce/plugins/nonbreaking";
import "tinymce/plugins/insertdatetime";
import "tinymce/plugins/autoresize"; 
import "tinymce/plugins/pagebreak";
import "tinymce/plugins/print";
import "tinymce/plugins/save";
import "tinymce/plugins/tabfocus";// import 'tinymce/plugins/contextmenu'
// import "tinymce/plugins/imagetools";
// import "tinymce/plugins/autosave";
// import "tinymce/plugins/emoticons";
// import "tinymce/plugins/spellchecker";import plugins from './plugins'
import toolbar from './toolbar'export default {name: 'tinymce',components: { editor },props: {value: {// 默认的富文本内容type: String,default: ''},id: {type: String,default: ''},disabled: {// 禁用type: Boolean,default: false},},data () {return {init: {language_url: '/tinymce/langs/zh_CN.js', // 语言包路径language: 'zh_CN', // 语言skin_url: '/tinymce/skins/ui/oxide', // 主题路径content_css: '/tinymce/skins/ui/oxide/content.css', // 为编辑区指定css文件,该参数的值是你的css文件路径,可使用绝对路径或相对路径。min_height: 80,// height: 500,// width: this.calcWidth(),plugins: plugins, // 指定需加载的插件toolbar: toolbar, // 自定义工具栏toolbar_mode: 'sliding', // 工具栏模式// paste_data_images: true, // 允许粘贴图片branding: false, // 不显示富文本支持方statusbar: false, // 隐藏状态栏menubar: false, // 禁用菜单栏theme: 'silver', // 默认主题placeholder: '请输入',fontsize_formats: "12px 14px 16px 18px 20px 22px 24px 36px 48px 56px 72px",font_formats: "宋体='宋体';仿宋='仿宋';微软雅黑='微软雅黑';楷体='楷体';隶书='隶书';幼圆='幼圆';Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Helvetica=helvetica;",content_style: `body { font-family:宋体,Arial,sans-serif; font-size:14px;line-height: 1.5; }` + `table { width: 100% !important;}` + `td { border: 1px solid #ccc !important; }`,zIndex: 1101,style_formats_merge: false, //是否将style_formats设置中的样式附加到默认样式格式还是完全替换它们。true为附加style_formats_autohide: true, // 隐藏当前不可用的样式列表object_resizing: false, //禁用表格内联样式拖拽拉伸table_resize_bars: false,//禁用表格单元格拖拽拉伸forced_root_block: '', // 删除在tinymce中自动添加的p标签force_br_newlines : true,force_p_newlines : false,// style_formats: [//   // {//   //   title: '首行缩进',//   //   block: 'p',//   //   styles: { 'text-indent': '2em' }//   // },//   {//     title: 'Headings',//     items: [//       { title: 'Heading 1', format: 'h1' },//       { title: 'Heading 2', format: 'h2' },//       { title: 'Heading 3', format: 'h3' },//       { title: 'Heading 4', format: 'h4' },//       { title: 'Heading 5', format: 'h5' },//       { title: 'Heading 6', format: 'h6' }//     ]//   },//   // {//   //   title: 'Inline',//   //   items: [//   //     { title: 'Bold', format: 'bold' },//   //     { title: 'Italic', format: 'italic' },//   //     { title: 'Underline', format: 'underline' },//   //     { title: 'Strikethrough', format: 'strikethrough' },//   //     { title: 'Superscript', format: 'superscript' },//   //     { title: 'Subscript', format: 'subscript' },//   //     { title: 'Code', format: 'code' }//   //   ]//   // },//   {//     title: 'Blocks',//     items: [//       { title: 'Paragraph', format: 'p' },//       { title: 'Div', format: 'div' },//       // { title: 'Blockquote', format: 'blockquote' },//       // { title: 'Pre', format: 'pre' }//     ]//   },//   {//     title: 'Align',//     items: [//       { title: 'Left', format: 'alignleft' },//       { title: 'Center', format: 'aligncenter' },//       { title: 'Right', format: 'alignright' },//       { title: 'Justify', format: 'alignjustify' }//     ]//   },//   // {//   //   title: "行高",//   //   items: [//   //     { title: "1", block: "p", styles: { "line-height": "1.0" } },//   //     { title: "1.5", block: "p", styles: { "line-height": "1.5" } },//   //     { title: "1.75", block: "p", styles: { "line-height": "1.75" } },//   //     { title: "2", block: "p", styles: { "line-height": "2" } },//   //     { title: "3", block: "p", styles: { "line-height": "3" } },//   //     { title: "4", block: "p", styles: { "line-height": "4" } },//   //     { title: "5", block: "p", styles: { "line-height": "5" } },//   //   ],//   // },// ],// init_instance_callback: (editor) => {//   console.log(editor,'editor');//     // 更改元素为Div//     editor.execCommand('mceInsertContent', false, '<p></p>')// },// images_upload_handler: (blobInfo, success, failure) => {// console.log(blobInfo, success, failure,'blobInfo');// console.log(success, 'success');// console.log(failure,'failure');// const img = "data:image/jpeg;base64," + blobInfo.base64();// success(img);// },},myValue: this.value,}},beforeDestroy () {tinymce.remove()},created () {},mounted () {tinymce.init({})},computed: {},watch: {value(newValue) {this.myValue = newValue},myValue(newValue) {this.$emit('input', newValue)},},methods: {onClick(e) {this.$emit('onClick', e, tinymce)},// clear() {//   this.myValue = ''// },// calcWidth() {//   return document.body.clientWidth / 2 + 'px'// },},
}
</script><style lang="scss" scoped>::v-deep .tox .tox-tbtn--select {width: 100px;}::v-deep .tox .tox-sidebar-wrap {padding: 5px;}</style>

plugins.js

// autoresize 编辑器高度自适应
// autosave 添加此插件跳跳转url时会弹出一个提示框(提示信息:重新加载此网站? 系统可能不会保存您所做的更改。)const plugins = ['advlist anchor autolink  code codesample colorpicker directionality fullscreen hr image insertdatetime link lists media nonbreaking pagebreak paste preview print save searchreplace tabfocus table template textcolor textpattern visualblocks visualchars wordcount autoresize']export default plugins

toolbar.js

// Here is a list of the toolbar
// Detail list see https://www.tinymce.com/docs/advanced/editor-control-identifiers/#toolbarcontrols// const toolbar = ['searchreplace bold italic underline strikethrough alignleft aligncenter alignright outdent indent  blockquote undo redo removeformat subscript superscript code codesample', 'hr bullist numlist link image charmap preview anchor pagebreak insertdatetime media table emoticons forecolor backcolor fullscreen']// styleselect 行高
// table 表格
const toolbar = ['bold italic underline | fontselect | fontsizeselect | forecolor backcolor | removeformat']export default toolbar

展示效果图:

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com