Lazy Load giving Rigger only via scroll, and not when being ordered

Asked

Viewed 273 times

0

I have a gallery page on shadow box with a code of lazy load "working" on the images that appear inside the shadow box (the preload carries everything except the images inside the shadow box who are with the lazy load)

the problem is that the trigger of load gets along scroll: when you click on the gallery thumbnail, the shadow box opens and the image does not load. it only loads if you give a light scroll page. (decrease the window to 1440x900 or less to check the "bug")

I imagine a parameter change is necessary, but I don’t know which one. Individual loads have to act upon each image request, either by clicking on the thumbnail or by clicking on the previous/next

the code as is Pastebin

    <script>
/*! Lazy Load 1.9.1 - MIT license - Copyright 2010-2013 Mika Tuupola */
!function(a,b,c,d){var e=a(b);a.fn.lazyload=function(f){function g(){var b=0;i.each(function(){var c=a(this);if(!j.skip_invisible||c.is(":visible"))if(a.abovethetop(this,j)||a.leftofbegin(this,j));else if(a.belowthefold(this,j)||a.rightoffold(this,j)){if(++b>j.failure_limit)return!1}else c.trigger("appear"),b=0})}var h,i=this,j={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:b,data_attribute:"original",skip_invisible:!0,appear:null,load:null,placeholder:"data:image/png;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"};return f&&(d!==f.failurelimit&&(f.failure_limit=f.failurelimit,delete f.failurelimit),d!==f.effectspeed&&(f.effect_speed=f.effectspeed,delete f.effectspeed),a.extend(j,f)),h=j.container===d||j.container===b?e:a(j.container),0===j.event.indexOf("scroll")&&h.bind(j.event,function(){return g()}),this.each(function(){var b=this,c=a(b);b.loaded=!1,(c.attr("src")===d||c.attr("src")===!1)&&c.is("img")&&c.attr("src",j.placeholder),c.one("appear",function(){if(!this.loaded){if(j.appear){var d=i.length;j.appear.call(b,d,j)}a("<img />").bind("load",function(){var d=c.attr("data-"+j.data_attribute);c.hide(),c.is("img")?c.attr("src",d):c.css("background-image","url('"+d+"')"),c[j.effect](j.effect_speed),b.loaded=!0;var e=a.grep(i,function(a){return!a.loaded});if(i=a(e),j.load){var f=i.length;j.load.call(b,f,j)}}).attr("src",c.attr("data-"+j.data_attribute))}}),0!==j.event.indexOf("appear")&&c.bind(j.event,function(){b.loaded||c.trigger("appear")})}),e.bind("resize",function(){g()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&e.bind("pageshow",function(b){b.originalEvent&&b.originalEvent.persisted&&i.each(function(){a(this).trigger("appear")})}),a(c).ready(function(){g()}),this},a.belowthefold=function(c,f){var g;return g=f.container===d||f.container===b?(b.innerHeight?b.innerHeight:e.height())+e.scrollTop():a(f.container).offset().top+a(f.container).height(),g<=a(c).offset().top-f.threshold},a.rightoffold=function(c,f){var g;return g=f.container===d||f.container===b?e.width()+e.scrollLeft():a(f.container).offset().left+a(f.container).width(),g<=a(c).offset().left-f.threshold},a.abovethetop=function(c,f){var g;return g=f.container===d||f.container===b?e.scrollTop():a(f.container).offset().top,g>=a(c).offset().top+f.threshold+a(c).height()},a.leftofbegin=function(c,f){var g;return g=f.container===d||f.container===b?e.scrollLeft():a(f.container).offset().left,g>=a(c).offset().left+f.threshold+a(c).width()},a.inviewport=function(b,c){return!(a.rightoffold(b,c)||a.leftofbegin(b,c)||a.belowthefold(b,c)||a.abovethetop(b,c))},a.extend(a.expr[":"],{"below-the-fold":function(b){return a.belowthefold(b,{threshold:0})},"above-the-top":function(b){return!a.belowthefold(b,{threshold:0})},"right-of-screen":function(b){return a.rightoffold(b,{threshold:0})},"left-of-screen":function(b){return!a.rightoffold(b,{threshold:0})},"in-viewport":function(b){return a.inviewport(b,{threshold:0})},"above-the-fold":function(b){return!a.belowthefold(b,{threshold:0})},"right-of-fold":function(b){return a.rightoffold(b,{threshold:0})},"left-of-fold":function(b){return!a.rightoffold(b,{threshold:0})}})}(jQuery,window,document);
</script>
<script>
$( document ).ready(function() {   
    $("img.lazy").lazyload({
        threshold : 50,
        skip_invisible : true
    });

    $('img.lazy').on('appear',function(){
        $(this).hide().fadeIn(1000);
    });

});
</script>

And the link of the test page with the bug: Arthurnunes Photography

  • 1

    Put the code here, make life easier for anyone who helps you not have to access an external site to have to see your code

1 answer

0


Add the line below in the code after opening the image:

$(".container img.lazy").lazyload();$(window).scroll();

Hard to find in the plugin where this is done. Then add the code below in the Javascript page:

$(function(){$(".Thumb").on("click",function(){ $(".container img.lazy").lazyload();$(window).scroll(); });});

This way, when the large image opens, it will invoke Lazy Load and call the scroll event in the window.

Updating the code to when pressed the arrow keys on the keyboard:

$(function(){$(".Thumb, .PamphletNextButton, .PamphletPrevButton").add(window).on("click keydown",function(){ $(".container img.lazy").lazyload();$(window).scroll(); });});
  • Muuuuuuuuuuuuuuito bom!!! resolveu 100% Muito Obrigado David!!!

  • Cool guy! Then mark the answer as the right one. Obg!

  • I had forgotten to mark as right, it was bad! I saw that managed to invoke the actions perfectly to give the necessary functionality! I am very grateful! In the mobile version however, there is Swipe. Would you be able to make a line for this? follow link tests with your fix arthurnunesfotografia.com/2.2/phone/birthday-original.htm l access via mobile or via mobile emulation of Chrome devtools, you will see that Swipe does not load

  • @Arthurnunes I could not open the link. Gave page not found.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.