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}
进入回调。非常长的五分钟