小程序中富文本的处理(内含图片)

页面显示代码:

<!-- 页面直接调用formatRichText方法即可 -->
<rich-text v-if="haveData !==''" class="course-des" :nodes="formatRichText(lawsDetail.courseText)"></rich-text>
//处理富文本标签(内含图片)方法写在methods中,页面直接调用即可
//如果文本中的图片只有<img src="">那么可以直接替换,但是如果有其他的样式比如width,height,style时就需要先去掉其,再替换
/**
 * 处理富文本里的图片宽度自适应
 * 1.去掉img标签里的style、width、height属性
 * 2.img标签添加style属性:max-width:100%;height:auto
 * 3.修改所有style里的width属性为max-width:100%
 * 4.去掉<br/>标签
 */
methods: {
        formatRichText(richText){
          if(richText != null){
                let newRichText= richText.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;
                });
                newRichText = newRichText.replace(/style="[^"]+"/gi,function(match,capture){
                    match = match.replace(/width:[^;]+;/gi, 'width:100%;').replace(/width:[^;]+;/gi, 'width:100%;');
                    return match;
                });
                newRichText = newRichText.replace(/<br[^>]*\/>/gi, '');
                newRichText = newRichText.replace(/\<img/gi, '<img style="width:100%;height:auto;display:block;margin:10px 0;"');
                return newRichText;
            }else{
                return null;
            }
        }
}

转载:https://www.cnblogs.com/lovelh/p/12747497.html

———————————————————————————————————————————————

后期补充:

1.在页面标签中直接处理富文本编辑器中的图片,报错;解决方法:在从后台获取到数据的时间就先处理富文本中的img再显示即可

代码:

this.optionList.title =  this.optionList.title.replace(/\<img/gi, '<img class="richImg"')
.richImg{
		max-width:50% !important;
		height:auto;
		display:block;
		margin-top:8px;
	}

注意:样式类必须写在app.vue中才可以生效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值