确定图像未插入dom时的宽度和高度

时间:2013-09-10 07:20:35

标签: javascript jquery

我正在使用ajax调用从服务器接收长字符串中的图像

图像的网址肯定在结果[1]内。 我使用了width / naturalWidth和height / naturalHeight,有时它们返回0,在其他情况下它们返回正确的像素大小

var imgElement = jQuery("<img>").attr("src", result[1]);
var width = imgElement[0].naturalWidth;
var height = imgElement[0].naturalHeight;
if (width >= that.minImgPixels && height >= that.minImgPixels) {
    image = result[1];
}

如何在不将图像宽度和高度插入dom的情况下检查图像宽度和高度的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

问题发生,因为设置jQuery("<img>")的src需要花费时间,当它这样做时,javascript继续运行到下一行,因为图像尚未加载,所以产生0。

解决方案是设置类似的加载事件:

var imgElement = jQuery("<img>").load(function(){
    var width = imgElement[0].naturalWidth;
    var height = imgElement[0].naturalHeight;
    if (width >= that.minImgPixels && height >= that.minImgPixels) {
        image = result[1];
    }
}).attr("src", result[1]);

答案 1 :(得分:0)

试试这个:

function GetAnImage(src) {

    var newImg = document.createElement('img');
    newImg.src = src;

    return newImg;
}

var newImg = GetAnImage("abc.jpg");
newImg.onload = function () {                           
    var height = this.height;
    var width = this.width;  
    //do with the image as you want         
}

或看到此链接:Getting auto size of IMG before adding it to DOM (Using JQuery)