为什么IE11会在仍然加载图像时返回错误的img.width和img.height(28x30像素)?

时间:2015-03-09 22:29:18

标签: javascript internet-explorer internet-explorer-11

我想在加载时检查图像宽度:

<img src="http://upload.wikimedia.org/wikipedia/commons/3/34/Regensburg_Uferpanorama_08_2006.jpg" id="img" alt="" />
<pre id="pre "></pre>
<script>
var i = 0;
var img = document.getElementById("img");
var pre = document.getElementById("pre");
function checkWidth() {
    i++;
    pre.innerHTML += "width:" + img.width + ";height:" + img.height + "\n";
    if (i < 20) {
        setTimeout(function() {
            checkWidth();
        }, 100);
    }
}
checkWidth();
</script>

现在我已经测试了几个浏览器并且都返回0x0,直到加载了图像标题(不是完整图像)。之后,他们返回正确的尺寸(例如1920x1080)。

但Internet Explorer 11(我只能测试此浏览器版本)为每个图像返回28x30像素(纵横比的独立性),直到加载标题。

enter image description here

为什么IE11会返回这个尺寸?这是所有IE版本中的常见行为吗?

1 个答案:

答案 0 :(得分:1)

@mouser有正确的想法。它是破碎图像的占位符:
enter image description here

我的解决方案是使用img.naturalWidth()而不是img.width(),如下所述:
https://stackoverflow.com/a/1977898/318765

这将返回0x0,直到加载了图像标题。