我在这里使用这段漂亮的代码将所有.svg文件替换为旧版浏览器中的.png,这对于向后兼容很有用。
但是,今天使用shopify时,由于某种奇妙的原因,它在从CDN提取的每个资产的末尾添加了一个强大的查询。
function supportsSVG() {
return !! document.createElementNS && !! document.createElementNS('http://www.w3.org/2000/svg','svg').createSVGRect;
}
if (!supportsSVG()) {
var imgs = document.getElementsByTagName('img');
var dotSVG = /.*\svg$/;
for (var i = 0; i !== imgs.length; ++i) {
if(imgs[i].src.match(dotSVG)) {
imgs[i].src = imgs[i].src.slice(0, -8) + 'png';
}
}
}
现在,以.svg结尾的img为目标。但是我不知道如何定位.svg?1234并将svg替换为.png
任何人都知道正则表达式可以瞄准它吗?
即使域名是.svg或URL中存在其他任何.svg,此方法也有效。它需要最后一个.svg
var url = "http://tricky.href.svg/filename.svg?abc1?test2?test3";
url = url.replace(/\.(svg)($|\?)/, '.png$2');
console.log(url); // http://tricky.href.svg/filename.png?abc1?test2?test3
您可以像这样使用它:
var dotSVG = /\.(svg)($|\?)/;
for (var i = 0; i !== imgs.length; ++i) {
imgs[i].src = imgs[i].src.replace(dotSVG, '.png$2');
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句