如何用jQuery/JS移除图片URL中的?tx=w_xxx参数部分?
解决方案
要移除图片URL里的?tx=w_xxx这类参数,只需要在原有jQuery代码的URL处理环节加一段逻辑即可,以下是两种可行方案:
完整修改代码
// Swap data-src for src $('img').each((index, element) => { let dataSrc; if ($(element).attr('data-src')) { dataSrc = $(element).attr('data-src'); } else if ($(element).attr('src')) { dataSrc = $(element).attr('src'); } if (dataSrc){ // 移除?tx=w_xxx参数 - 选下面其中一种方式即可 // 方式1:直接去掉所有查询参数(适合只有tx这一个参数的场景) dataSrc = dataSrc.split('?')[0]; // 方式2:只删除tx参数(URL有其他参数需要保留时用这个) // const url = new URL(dataSrc); // url.searchParams.delete('tx'); // dataSrc = url.toString(); // 原有URL修复逻辑 if (dataSrc.startsWith('//')) dataSrc = `https:${dataSrc}`; if (dataSrc.includes('%')) dataSrc = decodeURI(dataSrc); $(element).attr('src', dataSrc); } if ($(element).parents('figure').length === 1) $(element).unwrap(); });
逻辑说明
- 方式1:用
split('?')[0]直接截取问号前面的URL部分,操作简单,适合确定URL里只有tx=w_xxx这一个查询参数的情况。 - 方式2:用浏览器原生的
URL对象来管理查询参数,精准删除tx参数,不会影响URL里的其他参数,兼容性也没问题。
如果连picture里的source标签的data-srcset参数也要处理,加这段代码就行:
// 处理source标签的data-srcset $('source').each((index, element) => { let srcSet = $(element).attr('data-srcset'); if (srcSet) { srcSet = srcSet.split('?')[0]; // 同样选方式1或方式2处理 $(element).attr('data-srcset', srcSet); // 要是需要把data-srcset转成srcset,再加这句:$(element).attr('srcset', srcSet); } });
内容的提问来源于stack exchange,提问作者gilessmith
相关产品推荐
相关产品推荐

