优化代码

This commit is contained in:
java110 2020-10-15 16:09:52 +08:00
parent 92e1580473
commit 140094cb1d
4 changed files with 89 additions and 7 deletions

View File

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

View File

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

54
utils/ImageUtil.js Normal file
View File

@ -0,0 +1,54 @@
import {
isEmpty
} from './StringUtil'
/**
* 处理富文本里的图片宽度自适应
* 1.去掉img标签里的stylewidthheight属性
* 2.img标签添加style属性max-width:100%;height:auto
* 3.修改所有style里的width属性为max-width:100%
* 4.去掉<br/>标签
* @param html
* @returns {void|string|*}
*/
export function formatRichText(html) {
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(/style="[^"]+"/gi, function(match, capture) {
match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, 'max-width:100%;');
return match;
});
newContent = newContent.replace(/<br[^>]*\/>/gi, '');
newContent = newContent.replace(/\<img/gi, '<img style="max-width:100%;height:auto;display:block;margin:10px 0;"');
return newContent;
}
/**
* 替换 图片src
* @param {Object} _content 富文本
* @param {Object} _url 图片前缀
*/
export function replaceImgSrc(_content, _url) {
console.log('_content', typeof(_content))
if (isEmpty(_content)) {
return _content;
}
// a 为富文本的字符串内容为了测试只写了img标签
let b = /<img [^>]*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);
}

View File

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