画像のサイズを検出する関数があり、幅と高さの両方を含むオブジェクトを返したいと思っています。以下のコードでは、関数内のsz.width と sz.heightが値を保持していますが、それらが値を返した後は未定義です。私は何が欠けていますか?
function getImgSize(imgSrc) {
var newImg = new Image();
newImg.onload = function() {
var height = newImg.height;
var width = newImg.width;
function s() {}
sz = new s();
sz.width = width;
sz.height = height;
$('#infunc').text("in function, w = "+sz.width+", h = "+sz.height);
return sz;
}
newImg.src = imgSrc; // this must be done AFTER setting onload
}
var sz = getImgSize("http://lorempixel.com/output/fashion-q-c-1920-1920-4.jpg");
$('#outfunc').text("outside function, w = "+sz.width+", h = "+sz.height);
jsfiddle: http://jsfiddle.net/forgetcolor/LbxA3/