js获取html中的img标签,图片标签,提取src属性并替换操作

场景:

获取HTML中的所有图片标签,并把图片的src属性替换成webp图片, 若浏览器支持webp,则展示,不支持走onerror函数展示data-original原图。

复制代码
function getDetailWebp(htmlStr, width= 600){
      if(!htmlStr) return '';
      var reg = /<img[^>]+src=[\'|\"]?([^(?"|?'|?>)]+)[\'|\"]?[^>]*>/gi;
      if(!reg.test(htmlStr)) return htmlStr; // 内容中无图直接返回不用处理
      return htmlStr.replace(reg, function($0, $1){
          if($0.indexOf('data-original') != -1) return $0;  // 如果图片标签上有这个属性,那这个可能是接口或者自己已经处理过的不需要重复处理,返回即可;
          return $0.replace($1, imageToWebp($1, width)).replace(/\/?>/, ` data-original="${$1}" onerror="loadImageError(this)"/>`)
      })
    }

图片正则:

复制代码
var imgReg = /<img[^>]+>/gi; 
var imgAndSrcReg = /<img[^>]+src=[\'|\"]?([^(?"|?'|?>)]+)[\'|\"]?[^>]*>/gi; 
  1. <img 匹配图片标签;
  2. \^\>\]+ 匹配不是\>的任意字符,+ 1到多

  3. \^\>\]\* 不是\>的任意字符,\*代表0到多;

相关推荐
We་ct17 分钟前
LeetCode 125. 验证回文串:双指针解法全解析与优化
前端·算法·leetcode·typescript
帅得不敢出门38 分钟前
Android Framework在mk中新增类似PRODUCT_MODEL的变量并传递给buildinfo.sh及prop属性中
android·linux·前端
她超甜i1 小时前
css省略号展示,兼容性强,js判断几行,不需要定位
javascript·css·vue.js
小码吃趴菜1 小时前
【无标题】
前端·chrome
毕设源码-朱学姐2 小时前
【开题答辩全过程】以 基于HTML5的购物网站的设计与实现为例,包含答辩的问题和答案
前端·html·html5
梦6502 小时前
CSS 元素垂直水平居中的 8 种方法
前端·css
We་ct2 小时前
LeetCode 68. 文本左右对齐:贪心算法的两种实现与深度解析
前端·算法·leetcode·typescript
ShoreKiten3 小时前
ctfshow-web316
运维·服务器·前端
前端 贾公子3 小时前
release-it 使用指南
前端·javascript
全栈技术负责人3 小时前
前端团队 AI Core Workflow:从心法到落地
前端·人工智能·状态模式