【发布时间】:2012-01-09 01:31:18
【问题描述】:
我的最终目标是检测浏览器是否能够显示 webp 图像。如果是,则将页面上的所有图片替换为对应的 webp(位于同一目录中,名称相同,只是扩展名不同)
目前我有一个脚本可以成功检测浏览器是否能够显示 webp
(function(){
var WebP=new Image();
WebP.onload=WebP.onerror=function(){
if(WebP.height!=2){
console.log("You do not have WebP support.");
} else {
console.log("You do have WebP support.");
}
};
WebP.src='data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA';
})();
在获得 webp 支持的情况下,我尝试了以下代码但没有成功。
// replace .gif with .webp
var allImages = document.body.getElementsByTagName("img");
var length = allImages.length;
var i;
for(i = 0; i < length; i++){
allImages[i].src.replace("png", "testtest");
console.log(allImages[i]);
}
当放置在标题中时,控制台确实正确显示了所有图像标签,但源并没有从原来的 filename.png 更改。
关于什么做错了有什么想法吗?
编辑:感谢 wsanville,我发现了为什么它没有加载图像的问题。然而,在 chrome 中查看网络选项卡仍然显示我正在加载 png 和现在的 webp 图像。如何首先防止 png 图像加载?
【问题讨论】:
-
我建议使用更轻量级的解决方案进行 webp 支持检测stackoverflow.com/a/27232658/288906
标签: javascript webp