Javascript 打开图像';s onError函数转换为返回值

Javascript 打开图像';s onError函数转换为返回值,javascript,onload,onerror,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

所以我需要一个函数来测试图像是否可以加载。以下是我得到的:

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')

问题在于警报被困在其WIN功能中。如果映像加载,如何使
imgExists()
函数返回true;如果映像未加载,如何使函数返回false?

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

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);

映像将异步加载,因此不能立即从函数返回值。您必须遵循延迟执行模式,或者为要调用的函数提供回调,或者让它返回延迟对象。有任何示例吗?如何提供回调?将其作为参数传递给函数,并在得到结果时在函数内部调用。但这是一个警报,而不是返回。@JacksonGariety:
//用法示例。
!需要结果的代码进入回调。不要发出
警报
,而是做任何你想做的事情,例如测试
是否存在
是否为
,并相应地采取行动。这就是回调的工作原理。所以在我代码的其余部分,我有
if(imgExists('http://...')==true){//etc}
我如何修改它来检查回调?@JacksonGariety:
如果(存在){//etc}
进入回调。非常长的五分钟