UNPKG

simple-frame-unit

Version:

基于vue2 研发的与simple-data后端配合使用的组件

50 lines (45 loc) 1.73 kB
/** * 重置产品介绍中图片地址 * @name getImgSrc * */ export default function replaceUrl(htmlStr, url, preview = false) { try { const imgReg = /<img.*?(?:>|\/>)/gi // 匹配图片中的img标签 const videoReg = /<video(([\s\S])*?)<\/video>/gi // 匹配图片中的img标签 return htmlStr.replace(imgReg, (match, capture) => { return resetString(match, preview ? "image" : "img", url) }).replace(videoReg, (match, capture) => { return resetString(match, "video", url) }); } catch (e) { //TODO handle the exception return htmlStr; } } // 替换文件预览地址 function resetString(match, type, url) { const srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/i // 匹配图片中的src let srcStr = match.match(srcReg) let params = getUrlParams(srcStr[1]) let isUpload = Object.keys(params).length > 0 && hasObject(params, "t") let str = srcStr[1].slice(srcStr[1].indexOf('/admin-api'), srcStr[1].length) let dome = match.replace(srcReg, `src="${url + str}"`) if (isUpload) { return type === 'image' ? dome.replace('img', `ed-image preview`) + '</ed-image>' : dome } else { return match } } // 检测对象中是否包含指定字段 function hasObject(thisArg, ...argArray) { return Object.prototype.hasOwnProperty.call(thisArg, ...argArray) } function getUrlParams(url) { // \w+ 表示匹配至少一个(数字、字母及下划线), [\u4e00-\u9fa5]+ 表示匹配至少一个中文字符 let pattern = /(\w+|[\u4e00-\u9fa5]+)=(\w+|[\u4e00-\u9fa5]+)/ig; let result = {}; url.replace(pattern, ($, $1, $2) => { result[$1] = $2; }) return result }