将图像的onError函数转换为返回值

时间:2012-06-21 12:30:37

标签: javascript onload onerror

所以我需要一个函数来测试图像是否可以加载。这就是我所拥有的:

function imgExists(url){
    var img = new Image();
    img.onerror = function(){
        alert('error')
    }
    img.onload = function (){
    alert('load')
    }
    img.src = url;
}

imgExists('http://hashtraffic.com/img/jackson@2x.png')

问题是警报被困在他们的胜利功能中。如果图像加载,我如何让imgExists()函数返回true,如果不加载则返回false?

1 个答案:

答案 0 :(得分:6)

您需要使用回调,因为您的函数本质上是异步的:

function imgExists(url, callback) {
    var img = new Image();
    img.onerror = function() {
        callback(false);
    }
    img.onload = function () {
        callback(true);
    }
    img.src = url;
}

function checkImage(exists) {
    alert("Image exists: " + exists); // Usage example.
}

imgExists('http://hashtraffic.com/img/jackson@2x.png', checkImage);