2

そのため、画像を読み込めるかどうかをテストする関数が必要です。これが私が持っているものです:

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 を返す関数を取得するにはどうすればよいですか?

4

1 に答える 1

7

関数は本質的に非同期であるため、コールバックを使用する必要があります。

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);
于 2012-06-21T12:34:41.037 に答える