使用innerHTML使用JavaScript获取图像维度

使用innerHTML使用JavaScript获取图像维度,javascript,html,ajax,Javascript,Html,Ajax,我正在开发一个接收图像URL的AJAX函数。但是,我不会使用节点附加来插入它。我使用的是innerHTML,这使得获取文件维度非常困难 目前,我使用的函数返回的结果有些复杂。有时它获取实际尺寸,有时返回“0”作为图像尺寸 这是我的职责: var url = "http://placekitten.com.s3.amazonaws.com/homepage-samples/408/287.jpg"; var width = getDimensions(url)[0]; var height = g

我正在开发一个接收图像URL的AJAX函数。但是,我不会使用节点附加来插入它。我使用的是innerHTML,这使得获取文件维度非常困难

目前,我使用的函数返回的结果有些复杂。有时它获取实际尺寸,有时返回“0”作为图像尺寸

这是我的职责:

var url = "http://placekitten.com.s3.amazonaws.com/homepage-samples/408/287.jpg";
var width = getDimensions(url)[0];
var height = getDimensions(url)[1];
var insert = '<img src="'+url+'" width="'+width+'" height="'+height+'" />';

    function getDimensions(path) {
            var img = new Image();
            img.src = path;
            return [img.width, img.height]; 
    }
var url=”http://placekitten.com.s3.amazonaws.com/homepage-samples/408/287.jpg";
var-width=getDimensions(url)[0];
变量高度=getDimensions(url)[1];
var insert='';
函数getDimensions(路径){
var img=新图像();
img.src=路径;
返回[img.宽度,img.高度];
}
不知道为什么它的行为不一致。有人有什么建议吗

我在想,这可能与AJAX在加载维度之前插入图像有关,尽管还不是很确定

这是一把小提琴,它似乎像预期的那样工作,但正如我所说的,它是不一致的

编辑 这是第二个小提琴与一个更大的图像。我注意到它比较小的图像文件更加不一致


您必须等待图像完成加载,然后才能正确可靠地获取尺寸。目前的情况是,它在图像可能完全加载之前返回维度。如果您已经缓存了它,您可能会得到正确的维度,但在未缓存的大型图像上,您将无法得到可靠的结果

看看这个演示,看看你是如何做到这一点的

Javascript:

var url = "http://www.hdwallpapers.in/download/transformers_4_age_of_extinction-2560x1440.jpg";

var div = document.querySelector('div');
alert('loading image now');
var button = document.querySelector('.test');
getDimensions(url);



button.addEventListener('click', function () {
    div.innerHTML = insert;
});


function getDimensions(path) {
    var img = new Image();
    img.src = path;
    img.onload = function () {
        alert('loaded');
        var width = img.width;
        var height = img.height;
        insert = '<img src="' + url + '" width="' + width + '" height="' + height + '" />';
        button.disabled = false
    };
}
var url=”http://www.hdwallpapers.in/download/transformers_4_age_of_extinction-2560x1440.jpg";
var div=document.querySelector('div');
警报(“正在加载图像”);
var按钮=document.querySelector('.test');
获取维度(url);
按钮。addEventListener('click',函数(){
div.innerHTML=插入;
});
函数getDimensions(路径){
var img=新图像();
img.src=路径;
img.onload=函数(){
警报(“已加载”);
变量宽度=img.width;
var高度=img高度;
插入=“”;
button.disabled=false
};
}

图像加载是异步的,我想知道即使图像已缓存,您如何获得正确的
.width
.height
。感谢您的帮助!