Jump to content

IPS lazyloading does not work on dynamically loaded HTML elements (paginated, ajax loaded, etc)


Recommended Posts

Hello,

I've discovered a bug in how IPS' lazyloading works on dynamic elements.

in ./dev/js/library/app.js, line 61, you define a hook/override for $.fn.html. This makes sure that if dynamically loaded HTML contains lazyload elgible content, you instate the lazyload handler on it.

The problem seems to be instead of looping each lazyload element, ips.utils.lazyLoad.observe is called on the entire element. This then registers the IntersectionObserver on the entire element, causing each lazyloading element to be loaded straight away, defeating the point of the lazyload.

The fix is to instead call ips.utils.lazyLoad.observe on each lazyload capable element, like it's done elsewhere in the suite. I have patched this locally, but thought it would be useful to share to the IPS developers.

Happy new year!

Edited by G17 Media
Link to comment
Share on other sites

  • 5 weeks later...
17 hours ago, SeNioR- said:

Bump2

Bump3

 

I've logged an internal bug report so we can evaluate further. We do want to move more towards the native browser lazyload (such as we've done in Gallery) however we need to consider the trade-offs. The native functionality also has the same drawback as this bug where it won't work on dynamically loaded content.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...