1秒后JS / JQuery重试图像加载

时间:2013-10-30 03:23:19

标签: javascript jquery

我有一个要求调用一堆图像的请求:

<a href='www.domain1.com'><img src='../image/img1.png' onerror='imgError(this);'/></a>
<a href='www.domain2.com'><img src='../image/img2.png' onerror='imgError(this);'/></a>

问题在于调用时某些图像(~20%)还没有准备好。他们需要另一秒钟。

所以在js或jquery中,我想做的是在出错时获取失败的图像,等待1秒,然后再尝试加载那些失败的图像。如果他们在第二次尝试失败 - 哦,我很好。但我没有正确地这样做...我不应该在js中的另一个方法中调用超时吗?

function imgError(image) {
    image.onerror = "";
    image.src = image;

    setTimeout(function () {
        return true;
    }, 1000);
}

1 个答案:

答案 0 :(得分:11)

添加缓存断路器。

function imgError(image) {
    image.onerror = null;
    setTimeout(function (){
        image.src += '?' + +new Date;
     }, 1000);
}

(根据示例,这假设您的图片网址还没有查询字符串。如果确实如此,显然需要更多的工作。)