vue中添加Tinymce富文本编辑器

vue中引入TinyMCE实现富文本编辑器 vue tinymce 富文本编辑器 阅读详情

 

1.在 package.json 中安装插件

"@tinymce/tinymce-vue": "^2.1.0",
"tinymce": "^5.1.5"

     添加后,重新install

2.封装组件也可以直接用,封装是为了后期的延展性做考虑

<editor id='tinymce' v-model='tinymceHtml' :init='init'> </editor>

// 根据需求,自己手动记得预览功能
<el-dialog :close-on-click-modal="false" top="3%" :visible.sync="dialogVisible"
      width="540px">
      <div class="previewBox">
        <div style="font-size: 18px;font-weight:600;padding-bottom: 10px;">
          <span>预览</span>
        </div>
        <div v-html="bindHtml" class="preview"></div>
      </div>
  </el-dialog>

     手动引入需要的插件 

  import tinymce from 'tinymce/tinymce'
  import 'tinymce/themes/silver/theme'
  import Editor from '@tinymce/tinymce-vue'
  import 'tinymce/plugins/image'
  import 'tinymce/plugins/link'
  import 'tinymce/plugins/code'
  import 'tinymce/plugins/table'
  import 'tinymce/plugins/lists'
  import 'tinymce/plugins/contextmenu'
  import 'tinymce/plugins/colorpicker'
  import 'tinymce/plugins/textcolor'
  import 'tinymce/plugins/preview'
  import 'tinymce/plugins/media'

       在data里面对编辑器进行定义,因为上传方式有两种,写了两个   上传方法当时写在 methods里面,但是调用的时候,调不到,有可能是我写的有问题,可以自己进行尝试

init: {
          fontsize_formats: '8px 10px 12px 14px 16px 18px', // 第二步
          language_url: '../../static/tinymce/langs/zh_CN.js',
          language: 'zh_CN',
          skin_url:  '../../static/tinymce/skins/ui/oxide',
          height: 500,
          content_css: ['../../static/tinymce/skins/content/default/content.css'],
          accept: '',
          // eslint-disable-next-line standard/object-curly-even-spacing
          branding: false,
          selector: '#textarea',
          paste_data_images: false,
          file_picker_types: 'media',
          media_live_embeds: true,
          plugins: '  link table  lists image code colorpicker textcolor  contextmenu ', // media
          toolbar: '  preview bold italic  underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | undo redo | code uploadpic',
          audio_template_callback: function (data) {
            return '<audio controls>' + '\n<source src="' + data.source1 + '"' + (data.source1mime ? ' type="' + data.source1mime + '"' : '') + ' />\n' + '</audio>'
          },
          setup: (editor) => {
            // eslint-disable-next-line eqeqeq
            editor.ui.registry.addButton('preview', {
              text: '预览',
              onAction: (_) => {
                this.preview()
              }
            })
          },
          file_picker_callback: (cb, value, meta) => {
            // 当点击meidia图标上传时,判断meta.filetype == 'media'有必要,因为file_picker_callback是media(媒体)、image(图片)、file(文件)的共同入口
            // eslint-disable-next-line eqeqeq
            if (meta.filetype == 'media') {
              // 创建一个隐藏的type=file的文件选择input
              let input = document.createElement('input')
              input.setAttribute('type', 'file')
              input.onchange = function () {
                let file = this.files[0]// 只选取第一个文件。如果要选取全部,后面注意做修改
                uploadPic(file, cb)
                /*  let xhr, formData;
                 xhr = new XMLHttpRequest();
                 xhr.open('POST', self.apiUrl);
                 xhr.withCredentials = self.credentials;
                 xhr.upload.onprogress = function (e) {
                   // 进度(e.loaded / e.total * 100)
                 };
                 xhr.onerror = function () {
                   //根据自己的需要添加代码
                   console.log(xhr.status);
                   return;
                 };
                 xhr.onload = function () {
                   let json;
                   if (xhr.status < 200 || xhr.status >= 300) {
                     console.log('HTTP 错误: ' + xhr.status);
                     return;
                   }
                   json = JSON.parse(xhr.responseText);
                   //假设接口返回JSON数据为{status: 0, msg: "上传成功", data: {location: "/localImgs/1546434503854.mp4"}}
                   if(json.status==0){
                     //接口返回的文件保存地址
                     let mediaLocation=json.data.location;
                     //cb()回调函数,将mediaLocation显示在弹框输入框中
                     cb(mediaLocation, { title: file.name });
                   }else{
                     console.log(json.msg);
                     return;
                   }

                 }; */
              }
              // 触发点击
              input.click()
            }

            async function uploadPic(blobInfo, cb) {
              let formData = new FormData()
              // 服务端接收文件的参数名,文件数据,文件名
              // formData.append('file', blobInfo)
              // let res = await upload.upload(formData)
              // let data = res.data
              // eslint-disable-next-line eqeqeq
              // if (data && data.code == 0) {
              //   cb(data.data, {title: blobInfo.name})
              //   return data.data
              // } else {

              // }
            }
          },
          images_upload_handler: (blobInfo, success, failure) => {
            if (blobInfo.blob().size > 1024 * 1024) {
              failure('文件体积过大,不大于1M')
            } else {
              uploadPic(this.type)
            }

            async function uploadPic(type) {
              let formData = new FormData()
              // 服务端接收文件的参数名,文件数据,文件名
              // formData.append('file', blobInfo.blob())
              // let res
              // if (type === 'preview') {
              //   res = await pagemanager.uoloadImage(formData)
              // } else {
              //   res = await upload.upload(formData)
              // }
              // let data = res.data
              // // eslint-disable-next-line eqeqeq
              // if (data && data.code == 0) {
              //   success(data.data)
              // } else {
              //   failure('上传失败')
              // }
            }
          }
        }

在对富文本进行初始化

components: {Editor},

created() {
      tinymce.init(this.init)
},

 

* 我开始安装的的版本过高,引入插件后,无法加载出来编辑器,后来把版本降低到现在使用的这个,就可以加载出

  文档和度娘也有提到,版本跟插件的关系,版本不能超过5

tinymce 编辑器踩坑之旅----------自定义插件 先贴个官网地址 https://www.tiny.cloud/docs/ 最近开发项目中产品有很多需求,比如说在编辑器里面html代码,本来一开始用的是vue集成的那个编辑器,然后就发现,不能显示table!!!!样式 无奈之下找了找好像tinymce这个编辑器可以满足,但是在此之前没用过,所以去通读了一边官方网址,了解了一些基本东西。 然后开干 最开始么肯定是先安装一下插件 npm install tinymce/tinymce-vue --save npm install tinymce --s 阅读详情

相关推荐

vue+tinymce5 富文本编辑器使用、踩坑

注:此教程适用于 tinymce 5.x 版本(如果是tinymce 4.x,则可能不会实现 ) 安装与配置操作 (1)安装 npm install -s @tinymce/tinymce-vue npm install -s tinymce (2)在node_modules找到tinymce 将相关文件放到public中 langs文件夹存放的是语言包,tinymce默认是英文 具体实现 实现如下,...

qq_34183451的博客 1万+

tinymce系列(四) tinymce 常用内置 UI 组件介绍

本文做一个抛砖引玉,介绍了最基础的注册按钮、下拉菜单、注册 icon 和内置弹窗的使用。后面还会有几个实战的小 demo,都会重新用到这一块的内容~敬请期待

Jioho的博客 3917

vue中使用tinymce-vue创建富文本编辑器组件,安卓内存监控悬浮窗

/* 使用public本地库 */ // 引入tinymce主件 import tinymce from ‘…/…/…/public/tinymce/tinymce’ // 引入tinymce-vue组件 import Editor from ‘@tinymce/tinymce-vue’ // 必须引入主体才能汉化和显示 import ‘…/…/…/public/tinymce/themes/silver’ import ‘…/…/…/public/tinymce/icons/default/icons’

sa3221sa的博客 643

Vue使用Tinymce富文本编辑器自定义toolbar按钮

这里我增加了收缩的按钮 init: { language: "zh_CN", skin_url: "/tinymce/skins/ui/oxide", height: "100%", fontsize_formats: "8pt 10pt 12pt 14pt 16pt 18pt 24pt 36pt", font_formats: "微软雅黑=Microsoft YaHei;方正仿宋_GBK=方正仿宋_..

qq_41154522的博客 2851

Tinymce富文本编辑器在vue项目中的使用;引入第三方插件和上传视频、图片等

在项目中的public文件夹中新建tinymce文件夹(因为我的项目是脚手架创建的,所以公共文件夹是public);1. 最后两行是另外下载的插件(数学公式、导入word),上面的二和三步的tinymce文件夹里面新建plugins文件夹,下载的两个插件就丢这里面;方法是在文件后面的方法中定义的,目的是验证上传的视频是否符合,验证通过定义了一个全局的遮罩loading,再调用定义的。:因为tinymce是英文版本的,所以要下载汉化包中文js,放到上面的tinymce文件夹中。1. 编辑器初始化中的“

weixin_39311719的博客 4963

pytorch转onnx转paddlepaddle

1.pt转onnx 可查看我之前的文章:https://blog.csdn.net/oyjwin/article/details/117778583?spm=1001.2014.3001.5501

oyjwin的博客 1461

关于对tinymce富文本编辑器使用的心得

关于对tinymce使用中遇到的一键排版、图片上传、粘贴后自动上传图片、插入标题和摘要等功能

超超的博客 7011

AltiumDesigner相同模块复用操作

AltiumDesigner相同模块复用操作框选已布局好的A电路,作为复用模块创建Room同样的操作,框选C电路,然后也创建Room查看A电路的Chanel Offset显示设置复制Channel Offset查看B电路的Channel Offset复制A电路的Channel Offset到C电路Room格式的复制 框选已布局好的A电路,作为复用模块 创建Room 同样的操作,框选C电路,然后也创建Room 查看A电路的Chanel Offset 框选A模块的,然后点右下角的菜单——PCB——PCB

weixin_41947101的博客 5959

Vue2 实现内容拖拽或添加 HTML 到 Tinymce 富文本编辑器的高级功能详解

本文深度解析如何在 Vue2 中集成 Tinymce 6x 版本,实现高级富文本编辑功能。涵盖点击外部按钮插入内容、通过拖动按钮添加内容,以及拖动整块内容入富文本。使用的关键版本有 "@tinymce/tinymce-vue": "^3"、"core-js": "^3.8.3"、"tinymce": "^6.8.2"、"vue": "^2.6.14"。总结中强调 Tinymce 丰富插件和工具,鼓励读者通过深入了解这些功能,提升项目的文本编辑体验。

逆水寒 4079

unity 休闲游戏 动效规范说明

在特效制作中,有时为了完成更丰富、更绚丽的效果,可能会添加一些高级Shader(着色器),例如扭曲、溶解,这些Shader(着色器)往往需要用到显卡的部分功能,会造成较大的性能损耗。如果对纹理细节要求较高,那么建议使用贴图比例为1∶1的正方形(不强制),使用不等边贴图制作特效时会对纹理清晰度造成一定的损失(引擎算法决定)。首先选择模型体,然后在Inspector(检测视图)中查看该物体的属性,找到MeshRenderer(网格渲染)组件中的阴影设置项,如图。制作特效时,尽量不要使用灯光系统。

丛小胖 1610

【ArcGIS】ArcMap中北京1954坐标系转WGS84的实战技巧与参数选择

本文详细解析了在ArcMap中将北京1954坐标系数据转换为WGS84坐标系的完整流程与核心技巧。针对常见的坐标偏移问题,文章首先强调了数据“归位”的重要性,并提供了处理假东、假北值的具体操作步骤。随后,重点阐述了地理变换参数(如Beijing_1954_To_WGS_1984_2)的选择逻辑及其对转换精度的决定性影响,并结合案例说明了参数选择、中央经线确认及结果验证等关键环节,旨在帮助用户高效、准确地完成坐标转换。

f6g7h8i9j的博客 330

vue tinymce富文本编辑器 添加源码模式编辑

代码 要加上代码模式下修改,需要如下修改: const plugins = [ `code` ]; const toolbar = [ `code` ]; 整体代码如下,供参考 <template> <div class="tinymce-container editor-container"> <textarea class="tinymce-textarea" :id="tinymceId"></textarea>

群峰之巅的专栏 2910

【实战项目开发技术分享】如何设置机器人禁行区/虚拟墙

在现代机器人技术的日益发展中,路径规划是使机器人在复杂环境中安全、高效移动的关键部分。其中一个重要的问题是如何划定机器人的禁行区,以确保机器人不会进入危险区域或无法到达的地方。在本文中,我们将探讨一些关键策略,帮助机器人算法工程师更好地划定禁行区。代价地图可以通过多层叠加来实现,一般包括以下几个层级:静态地图层(Static Map Layer):由SLAM(Simultaneous Localization and Mapping)构建的静态地图。该层包含了环境中固定不变的地物信息,如墙壁、家具等。

xiewf的博客 1万+

vue富文本编辑器tinymce的使用

原文地址:https://blog.csdn.net/liub37/article/details/83310879 最近再弄一个后台管理系统,挑选了不少的编辑器,最终选择了tinymce,UI精美,功能模块多,可按需加载配置 来一张tinymce官网的完整功能的图(没梯子可能访问速度有点慢…) 下面开始工作: 插件安装 tinymce官方提供了一个vue的组件tinymce-vue 如果有注册或购买过服务的话,直接通过组件配置api-key直接使用,像我这种懒的注册或者购买的直接下载tinymce,自

Silence_Sep的博客 1990

Unity之Timeline教程

Unity Timeline是Unity的一种时间轴编辑器工具,用于制作和管理游戏中的动画、剧情以及事件触发。它提供了直观的界面,使得开发者可以通过拖放操作轻松创建和编辑时间轴。Activation Track:用于控制物体的激活状态。可以在轨道上添加关键帧,控制物体的激活和非激活状态。Animation Track:用于处理物体的动画。可以在此轨道上添加关键帧,编辑物体的动画状态。Audio Track:用于处理场景中的音频。可以管理音频的播放、暂停、淡入淡出等操作。

TxNet 9442

低代码部署与管理——OpenClaw智能助手的应用部署与运维(2026技术版)

OpenClaw智能助手的低代码部署与管理平台采用分层架构设计,包含部署工具、环境管理、版本控制等核心模块,支持从开发到生产的全流程自动化部署。该系统通过Docker、Kubernetes等技术实现应用构建和部署,利用Terraform等工具管理多环境配置,并提供完善的监控运维能力。平台针对开发、测试、预生产和生产环境提供差异化配置,确保部署效率和运行可靠性。这种架构设计遵循自动化、可扩展性和安全性原则,显著提升了智能助手应用的部署效率和运维质量。

一键难忘的博客 317

tinymce in vue2 [part 01]

=====================tinymce============================= ------------------需要api-key--------- tinymce 官方为 vue 项目提供了一个组件 tinymce-vue https://www.npmjs.com/package/tinymce-vue-2 npm install @tinym...

fyinthesky的专栏 252

MATLAB基础应用精讲-【强化学习】Actor - Critic 算法(附python代码实现)

这种架构结合了策略梯度方法(Policy - Gradient Methods)和价值函数估计方法(Value Function Estimation Methods)的优点。在强化学习中,智能体(Agent)需要通过与环境(Environment)的交互来学习最优的行为策略,以获得最大的累积奖励(Cumulative Reward)。

qq_36130719的博客 363

如何在vue项目中使用Tinymce

我们在项目中,总会遇到需要使用富文本的情况,而Tinymce就是一个很不错的富文本编辑器,如何将Tinymce整合到vue项目中呢? 本文是利用vue-cli3.0结合Tinymce4.x版本作的整合 1、安装tinymce, @tinymce/tinymce-vue组件 npm install tinymce @tinymce/tinymce-vue -S 安装成功后,在node_modules目录中,查找tinymce/skins目录,将skins目录拷贝到public目录下。为了结构清晰,在s

qq_29055201的博客 2253

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

vue项目中使用tinymce富文本编辑器

在你想要展示富文本编辑器的地方引入该组件,下面是一个引入的例子。根据自己的项目安装适合自己项目的tinymce版本。版本有冲突安装不上的可以请教d老师应当安装什么版本。在‘商品详情’tab页实现富文本编辑器的使用。前提,tab页可以正常实现功能切换。

常常不爱学习 2152

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

vue2 中使用 Tinymce 富文本编辑器详解

有一些博主,安装推荐的是tinymce@5.1.0,最后会遇到报错,import “tinymce/icons/default” 路径找不到,故需要升级tinymce版本,所以我这里直接安装的是tinymce@5.10.9;在node_modules中tinymce依赖包,找到其下面的skins文件下,直接复制,粘贴到src/assets/tinymce目录下;查询资料的时候遇到一篇文章,是一些扩展插件,可用可不用,了解一下就行,文章里有详细的插件介绍,安装命令和使用方法;想了解的可以自己查看;

前端探险家的博客 1725

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Vue项目中集成TinyMCE富文本编辑器(图片批量上传等)

TinyMCE是一款易用、且功能强大的所见即所得的富文本编辑器。同类程序有:UEditor、Kindeditor、Simditor、CKEditor、wangEditor、Suneditor、froala等等。因为项目原因,本文章是在Vue2中封装TinyMce富文本组件。

Ghmin的博客 5434

vue3 如何手动在tinymce中插入文本

vue3 如何手动在tinymce中插入文本

reembarkation的博客 760

富文本编辑器TinyMCE | tinymce在Vue中的使用

一、说明 tinymce 官方为 vue 项目提供了一个组件 tinymce-vue,但是需要购买 tinymce 的服务。所以只能自己配置 二、使用步骤 1、下载组件 npm install tinymce -S 2、提取文件 安装之后,在 node_modules 中找到 tinymce/skins 目录,然后将 skins 目录拷贝到 arc/asset...

3234

vue2 使用富文本插件 vue-tinymce(tinymce)

富文本组件: vue-tinymce 配置教程 1、package.json 添加依赖及对应版本 dependencies 依赖管理下添加 "tinymce": "^5.3.1", "@packy-tang/vue-tinymce": "^1.0.0", 加好了 npm install 一下 2、vue-tinymce 组件进行二次封装 在 src/components/ 下创建 vue-tinymce/index.vue 组件 (对vue-tinymce进行二次封装) <template

ws - 兮的博客空间 7456

vue实现在模态窗中使用富文本编辑器Tinymce功能,保留编辑器格式展示在页面

vue实现富文本编辑器Tinymce功能,保留编辑器格式文章展示在页面上tinymce只有第一次可使用,后续就获取不到光标,只有刷新后才能再次使用。

weixin_45226511的博客 1222
上一篇: h5 调取前置摄像头
下一篇: canvas裁剪图片
chen_vae
博客等级 码龄9年 4粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值