img.width和img.height随机返回0

时间:2016-08-10 14:52:40

标签: javascript html

感谢现有的线程,我能够提出以下代码:

var img = new Image();
img.src = imgSrc;
if(imgSrc.substring(imgSrcLength-4, imgSrcLength) == '.ico'){
    document.getElementById('size' + lineCount).innerHTML = img.height + 'x' + img.width;
} else {
    document.getElementById('size' + lineCount).innerHTML = img.naturalHeight + 'x' + img.naturalWidth;
}

您基本上可以忽略lineCount部分。它应该在html列表中显示不同图像的大小。但有时宽度或高度返回为0.对我来说它似乎是随机的,因为如果我再次运行脚本,将加载正确的数量,其他一些地方是0.如果我尝试通过Microsoft Edge函数调试代码一切正常,不会有任何0。

这是我的Microsoft Edge造成的问题还是我错过了什么?

2 个答案:

答案 0 :(得分:2)

您需要等待图像完成加载,然后才能获得它的大小。试试吧:

var img = new Image();
img.onload = function () {
    if(imgSrc.substring(imgSrcLength-4, imgSrcLength) == '.ico'){
        document.getElementById('size' + lineCount).innerHTML = img.height + 'x' + img.width;
    } else {
        document.getElementById('size' + lineCount).innerHTML = img.naturalHeight + 'x' + img.naturalWidth;
    }
};
img.src = imgSrc;

答案 1 :(得分:1)

在评估代码时,如果未加载图像,则图像的宽度和高度很可能会返回0。在运行代码之前,请确保已加载图像(即通过在onLoad事件中运行代码窗口)。