I know there is a lot of these on Stackoverflow but I haven't found one that works for me in a recent version of jquery (1.10.2).
I did try:
$(".lazy").load(function (){}
But I believe after some research using .load
to detect image load is deprecated in jQuery 1.8. What I need to do is fire an image resize function once the images are loaded. I don't have control over the HTML and at the moment I am having to add the image dimensions via jQuery by attaching an attribute (via .attr()
) once page loads so that I can use lazyload js.
The problem is that I need an accurate way to hold off all my various scripts until the image has loaded properly else the functions sometimes fire before every image had loaded. I have tried using $(window).load(function (){});
however it sometimes still fires before every image had loaded.
I usually do this:
var image = new Image(); image.onload = function () { console.info("Image loaded !"); //do something... } image.onerror = function () { console.error("Cannot load image"); //do something else... } image.src = "/images/blah/foo.jpg";
Remember that the loading is asynchronous so you have to continue the script inside the onload and onerror events.
There's also a useful .complete
property of an image object, you can use it if you have already set the .src
of your <img>
before attaching to it any event listeners:
var img=document.getElementById('myimg'); var func=function(){ // do your code here // `this` refers to the img object }; if(img.complete){ func.call(img); } else{ img.onload=func; }
Reference: http://www.w3schools.com/jsref/prop_img_complete.asp
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With