下面的这个方法是在百度上找的,但是老是报错,一直没找到原因,索性自己就挨个检查了下,发现在过滤之前需要对传过来的值进行检测,是字符串才能让这个方法执行
filters: { formatRichText(html) { //控制小程序中图片大小 let newContent = \'\' newContent = html.replace(/<img[^>]*>/gi, function(match) { 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) { 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:inline-block;margin:10rpx auto;"\'); return newContent; } },
以下为完整方法
filters: { formatRichText(html) { //控制小程序中图片大小 let newContent = \'\' if (typeof(html) == \'string\') { //检测值为字符串才能进行replace操作 newContent = html.replace(/<img[^>]*>/gi, function(match) { 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) { 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:inline-block;margin:10rpx auto;"\'); return newContent; } } },