【前端】vue引入tinymce富文本编辑器上传视频自动转img问题

news/2024/11/28 15:07:42/文章来源:https://www.cnblogs.com/sansui6/p/18570387

近期遇到了一个问题,前端项目引入tinymce富文本编辑器后有一个上传视频的需求,可是放入了视频以后,在预览时发现,视频标签未能正确展示,被替换为了img标签

找了很多解决办法,都没有解决这个问题,最后找到了一个办法, 特此记录。
解决办法:

1. 找到node_modules下tinymce插件里面的media文件下的plugin.js(node_modules/tinymce/media/plugin.js) 这个文件
2. 添加全局变量

var videoSource="";

3. 找到 createPreviewIframeNode 方法将方法代码替换为以下代码(可以将原来代码注释掉,方便恢复)

var createPreviewIframeNode = function (editor, node) {var previewWrapper;var previewNode;var shimNode;var name = node.name;previewWrapper = new global$7('span', 1);previewWrapper.attr({'contentEditable': 'false','style': node.attr('style'),'data-mce-object': name,'class': 'mce-preview-object mce-object-' + name});retainAttributesAndInnerHtml(editor, node, previewWrapper);previewNode = new global$7(name, 1);previewNode.attr({src: videoSource || node.attr('src'), // 修改controls: 'controls',    // 新增allowfullscreen: node.attr('allowfullscreen'),style: node.attr('style'),class: node.attr('class'),width: node.attr('width'),height: node.attr('height'),frameborder: '0'});shimNode = new global$7('span', 1);shimNode.attr('class', 'mce-shim');previewWrapper.append(previewNode);previewWrapper.append(shimNode);return previewWrapper;
};

4. 找到这个方法 placeHolderConverter ,然后在这个方法中找到以下代码块然后注释

 if (node.name === 'iframe' && hasLiveEmbeds(editor) && global$8.ceFalse) {if (!isWithinEmbedWrapper(node)) {node.replace(createPreviewIframeNode(editor, node));}} else {if (!isWithinEmbedWrapper(node)) {node.replace(createPlaceholderNode(editor, node));}}

5. 注释掉以上代码后替换为如下代码:

if (node.name === 'video' && hasLiveEmbeds(editor) && global$8.ceFalse) {console.log('videoSource===', videoSource)videoSource = ''if(node.attributes['map'] && node.attributes['map'].src){videoSource = node.attributes['map'].src}else{for(var ii=0;ii<node.attributes.length;ii++){if(node.attributes[ii].name == "src"){videoSource = node.map.node.attributes[ii].value}}}if(node.firstChild && node.firstChild.value){var elel=node.firstChild && node.firstChild.valuevar objE = document.createElement("div");objE.innerHTML = elel;var dom = objE.getElementsByTagName('source')[0]videoSource = dom.getAttribute('src')}node.replace(createPreviewIframeNode(editor, node));
}

好了,以上就是解决办法,最后效果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/841678.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【操作系统】2.3_11_ 哲学家进餐问题

https://www.bilibili.com/video/BV1YE411D7nH?spm_id_from=333.788.videopod.episodes&vd_source=6c2daed6731190bb7d70296d6b9746bb&p=36方法1 n个哲学家,n个筷子 创建一个初值为n-1的信号量,保证最多只有n-1个进程并发争抢资源,必有1个筷子资源余留,可以1个进程…

PhpWebStudy运行Laravel

创建Laravel项目​ 如果你想使用已存在的项目. 你可以跳过此步骤. 继续 创建站点 你可以使用Composer创建Laravel项目 shell composer create-project laravel/laravel example-app当然,FlyEnv也提供了快速创建laravel项目的方法。在站点面板中. 点击 新建项目选择项目保存位置…

Docker/DockerHub 国内镜像源/加速列表(11月26日更新-长期维护)

此文维护一个列表收录无需限定条件的Docker Hub镜像源,感谢这些公益服务者。6月6日,上海交大的 Docker Hub 镜像加速宣布因监管要求被下架,Docker hub 被封无法访问。前言本列表为科研工作者提供 docker 镜像网站,网络不好的同学可以使用镜像,或者推荐给身边有需要的朋友使…

Jenkin window bat批处理脚本如何 获取json对象返回值数据

前两天有这么个小需求: 在cmd中运行某测试工具后/请求某个api后,会返回一个json结果,其中有一个参数的值每次都变且经常要用,正常情况复制粘贴就好了,但这个值非常长,配上cmd的标记+粘贴的行为,就很酸爽了。然后就想快速提取这个值,顺着cmd的这个思路,就走上了批处理的…

jndi注入

jndi注入 jndi简单来说是提供一个查找服务,你可以通过字符串找到对应的对象。而jndi需要有服务的提供者,也就是是谁来提供这些对象。jndi只是负责名字->对象的查找,而不提供对象。 可以作为服务提供者的: Lightweight Directory Access Protocol (LDAP) 轻量级目录访问协…

《刚刚问世》系列初窥篇-Java+Playwright自动化测试-6- 元素基础定位方式-上篇 (详细教程)

1.简介 从这篇文章开始,就开始要介绍UI自动化核心的内容,也是最困难的部分了,就是:定位元素,并去对定位到的元素进行一系列相关的操作。想要对元素进行操作,第一步,也是最重要的一步,就是要找到这个元素,如果连元素都定位不到,后续什么操作都是无用功,都是扯淡,因此…

【类的默认成员函数】构造函数析构函数【C++】

【类的默认成员函数】构造函数&&析构函数【C++】 任何一个类在我们不写的情况下,都会自动生成6个默认成员函数构造函数:初始化(不是开空间!) 日常实操中最好自己写一个!!!!!!!! Date() {_year = 1;_month = 1;_day = 1; }特点 (1)函数名和类名相同 (2)…

Notepad++汉化教程

Notepad++系统只带了中文语言包,不需要像其他软件一样破解 1、打开Notepad++(通过文本文件右键选择以Notepad++打开或者找到Notepad++的快捷方式打开)。 2、菜单栏找到settings–>Preferences(首选项)。 3、找到General 右侧Localization选择简体中文,可以看到语言直接变…

文档解析Docling、Marker测评

Docling https://github.com/DS4SD/docling 环境安装 直接使用文档中的 pip install docling无法使用,因为torch和nvidia过高,与当前服务器版本不匹配,最好是低于当前服务器版本比较保险python第三方库中nvidia开头的版本需要小于12.2,如果使用12.4无法使用 安装步骤: pip…

explicit关键字【C++】

explicit关键字【C++】 用来修饰只有一个参数的类构造函数,以表明该构造函数是显式的,而非隐式的 禁止类对象之间的隐式转换,以及禁止隐式调用拷贝构造函数 隐式类型转换 int i = 1; double d = i;d被i赋值时 【编译器会做】 在中间产生一个临时变量 再通过这个临时对象进行…

快手观看时长建模:CREAD

将观看时长作为连续值预测,会带来“回归问题”,即会放大对异常值和潜在预测偏差的敏感性,常见的一种方法是把时长分段转为分类问题来预估,CREAD正是提出了一种回归转分类的处理方法。 CREAD的流程如下图所示,把观看时长分为M个桶,在每个桶内预估 P(y>t|x)的概率 经过推…