HTML5 - 拖放JPG并获取其宽度

时间:2013-05-08 23:20:57

标签: javascript file drag-and-drop

我想在将JPG拖入浏览器窗口后收到它的宽度。奇怪的是,有时它完美地工作,有时会返回零宽度。

fiddle

document.body.addEventListener('drop', function ( e ) 
{
    e.stopPropagation();
    e.preventDefault();

    file = e.dataTransfer.files[0];

    reader.readAsDataURL( file );
    reader.onloadend = function()
    {
        var source = this.result;
        var currentImg = new Image();
        currentImg.src = source;    

        var someDiv = document.createElement("div");
        someDiv.innerHTML = '<li>'+currentImg.width+'</li>';

        document.getElementById("logs").appendChild(someDiv);
    }
});

1 个答案:

答案 0 :(得分:1)

这是因为您可能在加载图像之前获得宽度。 放一些像这样的代码,你就可以正常工作了。

...
var currentImg = new Image();
currentImg.onload = function() {
    var someDiv = document.createElement("div");
    someDiv.innerHTML = '<li>'+currentImg.width+'</li>';
    document.getElementById("logs").appendChild(someDiv);
}
currentImg.src = source;   
...

在设置sorce之前放置onload,因为onload是一个回调函数。