检测到IE时更改文件扩展名

时间:2018-04-20 10:19:18

标签: javascript html svg png

当检测到IE时,有没有办法显示 svg 而不是 png 图像?

我在另一个问题上找到了以下代码,该问题输出IEnoIE的文字。

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

document.body.innerHTML = isIE() ? '.png' : '.svg';

当检测到IE时,这可用于将 .svg 更改为 img src 中的 .png 吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

已经可以用PHP检测IE了,同时渲染页面...... 然后设置一个JavaScript变量或者只设置PHP对象属性,让一些.getFilename()方法返回正确的文件名。

<?php
$user_agent = trim(strtolower($_SERVER["HTTP_USER_AGENT"]));
$pattern = "/msie\s(\d+)\.(\d+)/";
$suffix = 'png';

/* attempting to match the above regular expressions pattern */
if(preg_match($pattern, $user_agent, $matches)){
   // $major_version = $matches[1];
   // $minor_version = $matches[2];
   $suffix = 'svg';
}

/* and then output like */
echo '<img src="/images/example.'.$suffix.'"/>';

?>

在JavaScript中(使用jQuery),如果你真的想要执行DOM操作......

if (window.navigator.userAgent.indexOf("MSIE ") > 0) {
    $('img').each(function() {
        var $img = $(this);
        var imgsrc = $img.attr('src');
        $img.attr('src', imgsrc.replace(".png", ".svg"));
    });
}

更喜欢服务器端方法,仅仅因为它是关于提供资源 - 并且需要在很早的时候更换,以便不让客户端请求两种资源,将已删除的请求数量。服务器端代码在任何DOM事件发生之前运行,这是此处的进展。