给定下面 3 个图像网址
http://www.vbarter.com/images/content/3/2/32822.JPG (负载) http://www.vbarter.com/images/content/3/2/32784.png (负载)
http://www.bikewalls.com/pictures/abc.jpg (未加载)
我需要一个 javascript/jquery 函数/代码来自动更改有效的扩展。以上面的例子为例将会非常有帮助。这是我的代码片段:
function imgError(image) {
image.onerror = "";
var image_src=image.src.substring(0, image.src.length-3);
image.src = image_src+"png";
$.ajax({
type: "HEAD",
url: image.src, //or your url
success: function(data){
},
error: function(data){
image.src = image_src+"JPG";
$.ajax({
type: "HEAD",
url: image.src, //or your url
success: function(data){
},
error: function(data){
alert("image fails");
},
});
},
});
return true;
}
HTML part
<img src="above url" onerror="imgError(this);">
考虑图像 src 为 vbarter.com/images/content/3/2/32822.jpg 的情况。在内部 ajax 函数中,它进入错误部分并警告“图像失败”。但 vbarter.com/images/content/3/2/32822.JPG 存在。
最佳答案
事实上你的代码是正确的,但问题是由于jsfiddle网站上使用ajax的跨域请求问题
我修改了你的jsfiddle示例,将图像源更改为同一域下的图像。你会发现结果和你想象的一样。
<div style="background-color:black;">
<img src="http://fiddle.jshell.net/img/logo.jpg" onerror="imgError(this);" />
</div>
<script>
function imgError(image) {
image.onerror = "";
var image_src=image.src.substring(0, image.src.length-3);
image.src = image_src+"jpg";
$.ajax({
type: "HEAD",
url: image.src, //or your url
success: function(data){
alert("png sucess");
},
error: function(data){
image.src = image_src+"png";
.ajax({
type: "HEAD",
url: image.src, //or your url
success: function(data){
alert("JPG success");
},
error: function(data){
alert("JPG fails");
},
});
}
});
return true;
}
</script>
关于javascript - Jquery/javascript 检查图像是否存在并更正它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22169657/