uniapp解析富文本,视频无法显示问题

1. uniapp解析富文本,视频无法显示问题

  rich-text 无法处理 video,uni-app 文档中关于 rich-text 介绍中明确说明 rich-text 支持什么(参考文档),其中并不包含 video 。

1.1. 解决办法

  在uni-app插件市场搜索parse插件使用。

  parse插件有很多,包含的功能也不尽相同。

  我播放 video 时使用的是uParse 富文本解析

1.1.1. uParse 富文本解析插件的使用

  (1)在项目中导入插件。这步不详述了。不会的需要补补关于uniapp的使用知识。导入成功后,多出目录项目根目录/components/u-parse。

  (2)在页面中导入插件。

javascript 复制代码
import uParse from '@/components/u-parse/u-parse.vue';

  (3)替换rich-text

javascript 复制代码
<!-- <rich-text :nodes="content"></rich-text> -->
<u-parse :content="content" />

1.1.2. 处理 vedio 标签样式

  默认的vedio样式需要修改时,可以使用正则表达式替换。。

  (1)新建 js 文件 : richTextUtil.js

语法说明

标题文本样式列表图片链接目录代码片表格注脚注释自定义列表LaTeX 数学公式插入甘特图插入UML图插入Mermaid流程图插入Flowchart流程图插入类图快捷键

代码片复制

下面展示一些 内联代码片

javascript 复制代码
/**
 * 处理富文本里的图片宽度自适应
 * 1.去掉img、video标签里的style、width、height属性
 * 2.修改所有style里的width属性为max-width:100%
 * 3.img、video标签添加style属性:max-width:100%;height:auto
 * 4.去掉<br/>标签
 * @param html
 * @return string
 */
function formatRichText (html) {
	// 去掉img标签里的style、width、height属性
	let newContent= html.replace(/<img[^>]*>/gi,function(match,capture){
		match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
		match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
		match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
		return match;
	});
	
	// 去掉video标签里的style、width、height属性
	newContent= html.replace(/<video[^>]*>/gi,function(match,capture){
		match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
		match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
		match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
		return match;
	});
	// 修改所有style里的width属性为max-width:100%
	// 去掉所有style里的font-size属性
	newContent = newContent.replace(/style="[^"]+"/gi,function(match,capture){
		match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, 'max-width:100%;');
		match = match.replace(/font-size:[^;]+;/gi, '');
		return match;
	});
	// 去掉<br/>标签
	newContent = newContent.replace(/<br[^>]*\/>/gi, '');
	// img标签添加style属性:max-width:100%;height:auto
	newContent = newContent.replace(/\<img/gi, '<img style="max-width:100%;height:auto;display:block;margin:0px auto;"');
	// video标签添加style属性:max-width:100%;height:auto
	newContent = newContent.replace(/\<video/gi, '<video style="max-width:100%;height:auto;display:block;margin:0px auto;"');
	return newContent;
}

export default {
	formatRichText,
};

  (2)引入js库

javascript 复制代码
import richTextUtil from '@/common/richTextUtil.js';

  (3)调用方法

javascript 复制代码
this.content = richTextUtil.formatRichText(res.content);
相关推荐
2501_916008894 小时前
怎么用 Godot 导出 iOS 应用并上架 App Store?签名字段该填什么?
android·ios·小程序·https·uni-app·iphone·webview
byte轻骑兵4 小时前
【LE Audio】PBP精讲[5]: 广播音频的身份标识与元数据交互法则
人工智能·音视频·le audio·低功耗蓝牙音频
linux_cfan16 小时前
videojs v10 源代码系列解读:14 · 谓词守卫:在运行时安全地调用能力
前端·javascript·音视频
郑州光合科技余经理17 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
赛博仓鼠17 小时前
秋叶ComfyUI 3.2整合包实测:Python 3.13+Torch 2.13全栈升级,一键跑通MiniMax H3(附完整部署)
ai·ai作画·aigc·音视频
乐橙开放平台19 小时前
从「多套客户端」到一套开放能力:乐橙视频监控能力复盘
笔记·物联网·自动化·音视频·智能家居
linux_cfan1 天前
videojs v10 源代码系列解读:13 · 能力型媒体契约:`Media` 的组合接口
前端·javascript·音视频
勤劳X码农1 天前
2026年TTS工具技术测评:7款方案实测,从免费额度到API集成全解析
人工智能·音视频·实时音视频
m0_614523551 天前
Log视频导入发灰,先查颜色链
音视频·视频编辑
白远山1 天前
城市电竞陪玩调度系统实战:从派单算法到多端协同的架构拆解
java·架构·uni-app·需求分析