uniapp普通电商详情页使用富文本

1,753 阅读1分钟

 
		<!-- #ifdef H5||APP-PLUS -->
		<div v-html="formatRichTexts(product.Products_Description)" class="p_detail_des"></div>
		<!-- #endif -->
 
		<!-- #ifdef MP -->
		<rich-text :nodes="product.Products_Description|formatRichText" class="p_detail_des"></rich-text>
		<!-- #endif -->

因为uniapp在h5和app和小程序显示不同所以使用条件编译来适配不同的

filters: {
				/**
				 * 处理富文本里的图片宽度自适应
				 * 1.去掉img标签里的style、width、height属性
				 * 2.img标签添加style属性:max-width:100%;height:auto
				 * 3.修改所有style里的width属性为max-width:100%
				 * 4.去掉<br/>标签
				 * @param html
				 * @returns {void|string|*}
				 */
 
				formatRichText (html) { //控制小程序中图片大小
					if(!html) return;
				    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;
				    });
					newContent= newContent.replace(/<div[^>]*>/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;
					});
					newContent= newContent.replace(/<p[^>]*>/gi,'');
					newContent= newContent.replace(/<[/]p[^>]*>/gi,'');
				    newContent = newContent.replace(/style="[^"]+"/gi,function(match,capture){
				        match = match.replace(/width:[^;]+;/gi, 'width:100%;').replace(/width:[^;]+;/gi, 'width:100%;');
				        return match;
				    });
 
				    newContent = newContent.replace(/<br[^>]*\/>/gi, '');
				    newContent = newContent.replace(/\<img/gi, '<img style="width:100%;float:left;"');
					//newContent = newContent.replace(/>[\s]*</gi, "><");
 
				    return newContent;
				}
			},
methods: {
    formatRichTexts(html){
			if(!html) return;
			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, '');
 
				//图片app不支持
				// #ifdef APP-PLUS
				match = match.replace(/!*.webp/gi, '')
				// #endif
 
				return match;
			});
			newContent= newContent.replace(/<div[^>]*>/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;
			});
			newContent= newContent.replace(/<p[^>]*>/gi,'');
			newContent= newContent.replace(/<[/]p[^>]*>/gi,'');
			newContent = newContent.replace(/style="[^"]+"/gi,function(match,capture){
				match = match.replace(/width:[^;]+;/gi, 'width:100%;').replace(/width:[^;]+;/gi, 'width:100%;');
				return match;
			});
 
			newContent = newContent.replace(/<br[^>]*\/>/gi, '');
			newContent = newContent.replace(/\<img/gi, '<img style="width:100%;float:left;"');
			newContent = newContent.replace(/src="\/\//gi, 'src="http://');
			//newContent = newContent.replace(/>[\s]*</gi, "><");
			// console.log(newContent);
			return newContent;
		},
        
 
 
}