2009-04-28 138 views
4

当我没有指定样式时,我需要在javascript(jQuery)中获取图像的尺寸(jQuery的css()返回0)。获取图像的宽度和高度

也许这是因为我正在用jQuery加载图像,然后才询问它的尺寸。如果是这种情况,是否有任何听取的事件可以说明图像何时加载?

回答

3

也许图像尚未完全加载,因此尺寸无法给出。但没有您的代码我不能告诉你在做什么错的,但这里有一个例子,将工作:

function LoadImage(isrc) 
    { 
    var oImg = new Image(); 
    oImg.src = isrc; 
    if (oImg.complete) { 
     window.alert(oImg.src + ' ' + oImg.width + ' x ' + oImg.height); 
    } 
    else { 
     window.setTimeout('iLoad(imgsrc)', 1000); 
    } 
    } 

    <body onLoad='LoadImage(imgsrc)'> 
+0

完整似乎不适用于Chrome。这对我工作到目前为止:http://stackoverflow.com/questions/318630/get-real-image-width-and-height-with-javascript-in-safari-chrome – 2ni 2010-01-09 17:10:19

0

根据image.width或image.naturalWidth(和高度等效值)的宽度/高度给出图像标签上的宽度/高度属性,naturalWidth/Height给出了实际基础图像的尺寸。

0

您可以使用img's onload来获得尺寸的图像一旦加载:

<img src="..." onload="getDimensions(this)" /> 
1

这里有一个链接,帮助,看演示:http://docs.jquery.com/Events/load

使用jQuery有一个负载()事件当图像完成加载后,会发生这种情况,即:

<script type="text/javascript"> 
    $(document).ready(function() 
    { 
     $('#theImage').load(function() 
     { 
      // do the stuff here. 
     }); 
    }); 
</script> 


<img src="blah.jpg" id="theImage" /> 
0

你可以尝试karim79的和约翰·博克的回答结合起来。 尝试将图像预加载到隐藏的DOM中,当它加载时,您可以尝试获取宽度为&的高度。