我有一个函数来检测图像的大小,我希望它返回一个包含宽度和高度的对象。在下面的代码中,sz.width 和 sz.heightwithin该函数保存这些值,但在返回该值后,该值是未定义的。我缺少什么?
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/ http://jsfiddle.net/forgetcolor/LbxA3/
功能getImgSize
设置图像加载然后终止。稍后,当图像加载时,会调用匿名 onload 函数并正确计算大小,然后将其返回给一个不关心的 DOM 引擎......
您可能想知道如何can做你想做的事。简短的回答:你不能。这是您可以获得的最接近的结果:
function getImgSize(imgSrc, callback) {
var newImg = new Image();
newImg.onload = function() {
... // blah-blah blah
callback(sz);
}
newImg.src = imgSrc;
}
getImgSize("http://lorempixel.com/output/fashion-q-c-1920-1920-4.jpg",
function(sz) {
$('#outfunc').text("in callback, w = "+sz.width+
", h = "+sz.height);
});
我其实是来这里写的:
// 这必须在设置 onload 之后完成
我敢打赌,这就是你的问题所在。
// 这必须在设置 onload 之后完成
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)