javascript - Jquery/javascript 检查图像是否存在并更正它

标签 javascript jquery image onerror

给定下面 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>

http://jsfiddle.net/ceN8R/6/

关于javascript - Jquery/javascript 检查图像是否存在并更正它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22169657/

相关文章:

javascript - 使用 jquery 从 Html 表中删除重复行

css - 在响应式设计中将图像调整为 100%

java - 如何通过 Netbean Builder 将图像插入 Jtable

javascript - 为tinyMCE全屏添加关闭按钮

javascript - 使用 jQuery 日期选择器动态填充下拉列表

javascript - 子组件值到父组件显示React Native

javascript - 如何将选项传递到 HTML 选择中

javascript - 将 $.proxy 与动态创建的元素一起使用

javascript - 更改时验证字段 - datetimepicker

python - 如何在python中将另一个图像居中到零矩阵中?