You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

检测到IE浏览器时能否用给定代码将SVG图片替换为PNG?

解决方案

当然可以实现这个需求!你现有的IE检测函数完全能用,只需要扩展一下逻辑来修改<img>标签的src属性就行。这里有几种实用的实现方式,你可以根据自己的场景选择:

方式1:批量替换所有SVG图片

如果页面上所有.svg后缀的图片都需要在IE中切换成.png,可以用这段代码:

function isIE() { 
  var ua = window.navigator.userAgent; 
  return (ua.indexOf("MSIE ") > 0 || !! ua.match(/Trident.*rv\:11\./)); 
}

// 等页面DOM加载完成后再执行操作
window.addEventListener('load', function() {
  if (isIE()) {
    // 获取页面上所有img标签
    const svgImgs = document.querySelectorAll('img[src$=".svg"]');
    svgImgs.forEach(img => {
      // 把src里的.svg替换成.png
      img.src = img.src.replace(/\.svg$/, '.png');
    });
  }
});

方式2:只替换指定类的SVG图片

如果只想针对带有特定类名(比如ie-switchable-svg)的图片做替换,这样更精准,不会影响其他SVG:

function isIE() { 
  var ua = window.navigator.userAgent; 
  return (ua.indexOf("MSIE ") > 0 || !! ua.match(/Trident.*rv\:11\./)); 
}

window.addEventListener('load', function() {
  if (isIE()) {
    const targetImgs = document.querySelectorAll('img.ie-switchable-svg');
    targetImgs.forEach(img => {
      img.src = img.src.replace('.svg', '.png');
    });
  }
});

小提示

  • 确保你的.png图片和对应的.svg图片文件名一致(仅后缀不同),且放在同一目录下,否则替换后可能找不到图片。
  • 把这段代码放在页面底部,或者用load事件监听,保证DOM已经完全加载,不然可能找不到目标img标签。
  • 你提供的检测函数已经覆盖了IE10和IE11这两个对SVG支持有限的版本,完全适配你的需求。

内容的提问来源于stack exchange,提问作者iksnaperniksvan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:20:31