Lazy Load IFRAMEs
We've known for a decade that lazy loading resources like JavaScript, CSS, and especially images is a massive performance win for web pages. At first we used tricks and JavaScript to do the lazy loading, but more recently native image lazy loading has debuted in browsers.
Did you know that you can also lazy load IFRAMEs using the same loading="lazy" attribute and value?
<iframe
src="https://davidwalsh.name/"
loading="lazy"
onload="alert('Loaded!');"
/>
You can see how lazy loading IFRAMEs works with this demo:
This single attribute to perform a complex but useful operation is the ideal solution for lazy loading just about anything. I'm so thankful that browsers are implementing APIs that make using best practices so easy!
![5 HTML5 APIs You Didn’t Know Existed]()
When you say or read "HTML5", you half expect exotic dancers and unicorns to walk into the room to the tune of "I'm Sexy and I Know It." Can you blame us though? We watched the fundamental APIs stagnate for so long that a basic feature...
![Write Simple, Elegant and Maintainable Media Queries with Sass]()
I spent a few months experimenting with different approaches for writing simple, elegant and maintainable media queries with Sass. Each solution had something that I really liked, but I couldn't find one that covered everything I needed to do, so I ventured into creating my...
![prefers-color-scheme: CSS Media Query]()
One device and app feature I've come to appreciate is the ability to change between light and dark modes. If you've ever done late night coding or reading, you know how amazing a dark theme can be for preventing eye strain and the headaches that result.
![HTML5 download Attribute]()
I tend to get caught up on the JavaScript side of the HTML5 revolution, and can you blame me? HTML5 gives us awesome "big" stuff like WebSockets, Web Workers, History, Storage and little helpers like the Element classList collection. There are, however, smaller features in...
This browser feature looks really like a huge gamechanger. Would love so much to use it with profit although it doesn’t seem to work correctly for me.
[First of all, using it with images instead of iframes always worked perfectly, so all this regards only loading=”lazy” for iframes.]
After hours of testing on different pages, what I see is that using loading=”lazy”, Iframes load WAY TOO EARLY.
This apparently buggy behavior happens only if the page itself is NOT loaded from another iframe. So this rules out CodePen as a viable tool to show this.
Let’s make a text.html file from this code, almost identical to your example, to highlight exactly what I’m saying:
https://gist.github.com/jeff-at-livecanvas/bb1a803465419c62d623305daf6722cd
Opening this file in a Chrome window, with an internal height of 700 pixels, shows the Loaded! message immediately.
Same happens with latest Firefox too.
Would be great if somebody could shed some light on this.