From 140094cb1df5d3293bc4d2d2bcfc8e9509a01358 Mon Sep 17 00:00:00 2001 From: java110 <928255095@qq.com> Date: Thu, 15 Oct 2020 16:09:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/activitesDetail/activitesDetail.vue | 6 ++- pages/notice/detail/detail.vue | 4 +- utils/ImageUtil.js | 54 +++++++++++++++++++++++ utils/StringUtil.js | 32 +++++++++++--- 4 files changed, 89 insertions(+), 7 deletions(-) create mode 100644 utils/ImageUtil.js diff --git a/pages/activitesDetail/activitesDetail.vue b/pages/activitesDetail/activitesDetail.vue index 8240d1b..3f81566 100644 --- a/pages/activitesDetail/activitesDetail.vue +++ b/pages/activitesDetail/activitesDetail.vue @@ -44,6 +44,10 @@ import { loadActivites } from '../../api/index/indexApi.js' + + import conf from '../../conf/config.js' + + import {replaceImgSrc} from '../../utils/ImageUtil.js' export default { data() { return { @@ -122,7 +126,7 @@ _that.src = _activites.src; _that.userName = _activites.userName; _that.startTime = _activites.startTime; - _that.context = _activites.context; + _that.context = replaceImgSrc(_activites.context,conf.baseUrl); _that.readCount = _activites.readCount; _that.likeCount = _activites.likeCount; }); diff --git a/pages/notice/detail/detail.vue b/pages/notice/detail/detail.vue index 9d1b301..f8dc7f9 100644 --- a/pages/notice/detail/detail.vue +++ b/pages/notice/detail/detail.vue @@ -18,6 +18,8 @@ /** detail.js **/ const context = require("../../../context/Java110Context.js"); const constant = context.constant; //获取app实例 + import conf from '../../../conf/config.js' + import {replaceImgSrc} from '../../../utils/ImageUtil.js' //获取app实例 const app = getApp().globalData; @@ -60,7 +62,7 @@ console.log(res); let notice = res.data.notices[0] notice.timeStr = notice.startTime.replace(/:\d{1,2}$/, ' '); - + notice.context = replaceImgSrc(notice.context,conf.baseUrl); that.notice = notice; } }); diff --git a/utils/ImageUtil.js b/utils/ImageUtil.js new file mode 100644 index 0000000..f59df67 --- /dev/null +++ b/utils/ImageUtil.js @@ -0,0 +1,54 @@ +import { + isEmpty +} from './StringUtil' +/** + * 处理富文本里的图片宽度自适应 + * 1.去掉img标签里的style、width、height属性 + * 2.img标签添加style属性:max-width:100%;height:auto + * 3.修改所有style里的width属性为max-width:100% + * 4.去掉
标签 + * @param html + * @returns {void|string|*} + */ +export function formatRichText(html) { + let newContent = html.replace(/]*>/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(/style="[^"]+"/gi, function(match, capture) { + match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, 'max-width:100%;'); + return match; + }); + newContent = newContent.replace(/]*\/>/gi, ''); + newContent = newContent.replace(/\]*src=['"]([^'"]+)[^>]*>/g; // img 标签取src里面内容的正则 + let s = _content.match(b); // 取到所有img标签 放到数组 s里面 + if (!isEmpty(s)) { + for (let i = 0; i < s.length; i++) { + let srcImg = s[i].replace(b, '$1'); //取src面的内容 + if (srcImg.slice(0, 4) == 'http' || srcImg.slice(0, 5) == 'https') { + //若src前4位置或者前5位是http、https则不做任何修改 + } else { + //修改富文本字符串内容 img标签src 相对路径改为绝对路径 + _content = _content.replace(srcImg, _url + srcImg); + } + } + } + + return formatRichText(_content); +} diff --git a/utils/StringUtil.js b/utils/StringUtil.js index a700086..3c56670 100644 --- a/utils/StringUtil.js +++ b/utils/StringUtil.js @@ -8,10 +8,32 @@ * 判断是否为空 * @param {Object} _value 字符串 */ -export function isEmpty(_value){ - if(_value == undefined || _value == null || _value.trim() == ''){ - return true; +export function isEmpty(_value) { + let type = typeof _value; + + switch (type) { + case 'number': + if (isFinite(_value)) { + if (_value == 0) { + return true; + } else { + return false; + } + } else { + return true; + } + case 'object': + for (let i in _value) { + return false; + } + return true; + case 'string': + if (_value.length == 0) { + return true; + } else { + return false + } + default: + return true } - - return false; }