当检测到IE时,有没有办法显示 svg 而不是 png 图像?
我在另一个问题上找到了以下代码,该问题输出IE
或noIE
的文字。
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 吗?
提前致谢!
答案 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事件发生之前运行,这是此处的进展。