当前位置: 首页 > news >正文

tinymce富文本支持word内容同时粘贴文字图片上传 vue2

效果图

先放文件

文件自取tinymce: tinymce富文本简单配置及word内容粘贴图片上传

封装tinymce

文件自取:tinymce: tinymce富文本简单配置及word内容粘贴图片上传

页面引用组件

          <TinymceSimplify ref='TinymceSimplify'   v-model="knowledgeBlockItem.content" :disabled="disable" :height="530" class="filter-item" />import TinymceSimplify from '@/components/TinymceSimplify'components: {TinymceSimplify,},searchData(res) {this.knowledgeBlockItem.content=res.datathis.$refs.TinymceSimplify.changeVaulue(res.data)},





简单解释一下封装文件的内容
总体思路就是,找到粘贴的内容将img的src转换成Blob URI,这样页面可以正常展示图片了
src/components/TinymceSimplify/index

data() {return {//初始化配置myValue: this.value,init: {init_instance_callback: editor => {editor.on("paste", evt => {// 监听粘贴事件this.onPaste(evt);});},};},

提取图片信息,转换成Blob URI,再在监听事件中获取页面元素,将img src转换
 

  editor.on("NodeChange Change KeyUp SetContent", () => {this.hasChange = true;this.$nextTick(() => {console.log("输入?zhelieditor.getContent()");console.log("this.pasteChange", this.pasteChange);if (this.pasteChange) {// HTML字符串let htmlString = editor.getContent();// Blob URL数组let urls = this.blobUrlArr;// 使用DOMParser解析HTML字符串let parser = new DOMParser();let doc = parser.parseFromString(htmlString, "text/html");// 获取所有的<img>标签let imgs = doc.querySelectorAll("img");// 遍历imgs和urls数组,设置每个img的src属性imgs.forEach((img, index) => {if (index < urls.length) {// 确保不会越界img.src = urls[index];}});// 现在doc包含了修改后的DOM,但如果你需要将其转换回字符串,可以这样做:let modifiedHtmlString = doc.body.innerHTML;console.log("htmlContent8999", modifiedHtmlString);this.pasteChange = false;this.$nextTick(() => {editor.setContent(modifiedHtmlString);});}this.$emit("input", editor.getContent());});});editor.on("paste", (evt) => {// 监听粘贴事件this.onPaste(evt, editor);});},

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Framework源码面试之Handler面试集合
  • Laravel+swoole 实现websocket长链接
  • Netty Websocket
  • 【数据结构进阶】二叉搜索树
  • DC-1靶场打靶第一次!!!!冲冲冲!
  • 算法日记day 16(二叉树的广度优先遍历|反转、对称二叉树)
  • Android APP 基于RecyclerView框架工程(知识体系积累)
  • 在虚拟机 CentOS7 环境下安装 MySQL5.7 数据库
  • 深入理解Linux网络(三):TCP对象创建
  • [HTML]一文掌握
  • MySQL中EXPLAIN关键字详解
  • Python入门基础教程(非常详细)
  • C++ | Leetcode C++题解之第264题丑数II
  • 轨道相互作用和带隙
  • 为什么要从C语言开始编程
  • 30秒的PHP代码片段(1)数组 - Array
  • Codepen 每日精选(2018-3-25)
  • Docker下部署自己的LNMP工作环境
  • Electron入门介绍
  • FineReport中如何实现自动滚屏效果
  • github从入门到放弃(1)
  • Hibernate【inverse和cascade属性】知识要点
  • Javascript基础之Array数组API
  • Linux gpio口使用方法
  • October CMS - 快速入门 9 Images And Galleries
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 设计模式 开闭原则
  • 实现菜单下拉伸展折叠效果demo
  • 网络应用优化——时延与带宽
  • 为视图添加丝滑的水波纹
  • 主流的CSS水平和垂直居中技术大全
  • ​学习一下,什么是预包装食品?​
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • #100天计划# 2013年9月29日
  • #define与typedef区别
  • #LLM入门|Prompt#3.3_存储_Memory
  • #Z0458. 树的中心2
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (2)Java 简介
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (poj1.3.2)1791(构造法模拟)
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (笔记)M1使用hombrew安装qemu
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (简单) HDU 2612 Find a way,BFS。
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • ./configure、make、make install 命令
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net