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;
}