[jQuery] Odd behaviour of image.load()?
Hi,
I'm having some troubles using the load() event for images, since it
seems to behave totally different in every browser...
What I try to do is:
- fade an image out
- load another image (or the same again)
- fade the image in as soon as it's finished loading
Heres the code I use for testing (jQuery version: 1.2.2):
<script type="text/javascript">
var images = new Array("images/resultate/D RESULTATE.JPG");
var imagePos = 0;
$(document).ready(function() {
$("#image").bind('load', function(){
$("#image").fadeIn();
$("#log").append("load() triggered
");
});
$("#link").bind('click', function(){
change_img();
});
});
function change_img() {
imagePos = (++imagePos > images.length-1) ? 0 : imagePos;
$("#image").fadeOut(function() {
$("#image").attr("src", images[imagePos]);
});
}
</script>
<img src="images/resultate/D RESULTATE.JPG" width="100" alt=""
border="0" id="image">
<a href="#" id="link">Click</a>
You can also see it in action here: http://www.rakuun.de/Stuff/Schasler/load_test.html
Now, the strange things are:
- In IE 6, the load event of the image isn't always triggered when
the page is loaded (probably got something to do with caching, but I
think it should fire anyway?). This is especially noticeable when you
try it with a page from your hard disk.
- In FF 2, it seems to fire too early/not at all for huge images?
Can't really prove that, though. I guess it got something to do with
caching as well.
- In Opera 9, the event is ONLY fired when the page is loaded, never
again after that!
So, I think the main problem is caching.
Shouldn't the event be triggered if the image is loaded from some
cache instead from the web as well?
Is there any way I can get the correct behaviour in every browser?