I have a question, if i set a image height in css and try to get height/width i get different results in different browsers. Is there a way to get the same dimension in all browsers?
You can find a live example here<-Removed
and the concept is like this:
CSS:
img{
height:100px;
}
Script:
$(document).ready(function(){
$("#text").append($("#img_0").attr("height"));
$("#text").append($("#img_0").attr("width"));
});
Output Firefox: img height: 100 img width: 150
Output Chrome: img height: 100 img width: 0
Output Chrome: img height: 100 img width: 93?
i have tried this from StackOverflow: stackoverflow.com/questions/1873419/jquery-get-height-width
but still get the same result
Any one know a good solution?
The images aren't loaded in
document.ready
, you need to use thewindow.load
event to make sure they're present, like this:Here's a quick read on the difference, the important part is that pictures are loaded.
Replace
with
Opera 10.10 height/width 2008 x 3008
It looks like it is a race condition, at least it was for me using Chrome. The image isn't finished loading at the time you are getting the dimensions. I set everything to fire after a 200ms timeout and the real width/height are displayed.
Tested and works in Chrome, IE and Firefox. All display 2008 x 3008.
Nick Craver's answer to use $(window).load() is correct, but the images also have a load() method, which allows finer granularity, especially if there are perhaps multiple images to load.