このブラウザでは loading 属性が
<img src="/images/sample_01.jpg" width="960" height="593" alt=""> <img loading="lazy" class="lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="/images/sample_02.jpg" width="960" height="593" alt=""> <img loading="lazy" class="lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="/images/sample_03.jpg" width="960" height="593" alt=""> <img loading="lazy" class="lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="/images/sample_04.jpg" width="960" height="593" alt=""> <!-- data-src と class="lazyload" の指定なし --> <img loading="lazy" src="/images/sample_05.jpg" width="960" height="593" alt=""> <img loading="lazy" class="lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="/images/sample_06.jpg" width="960" height="593" alt=""> <img loading="lazy" class="lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="/images/sample_07.jpg" width="960" height="593" alt=""> <img loading="lazy" class="lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="/images/sample_08.jpg" width="960" height="593" alt=""> <img loading="lazy" class="lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="/images/sample_09.jpg" width="960" height="593" alt=""> <img loading="lazy" class="lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="/images/sample_10.jpg" width="960" height="593" alt=""> <!-- data-src、data-srcset、 class="lazyload" の指定なし --> <img loading="lazy" src="/images/large/sample_11.jpg" srcset="/images/small/sample_11.jpg 640w, /images/medium/sample_11.jpg 960w, /images/large/sample_11.jpg 1200w" sizes="100vw" alt=""> <!-- data-src、data-srcset、 class="lazyload" の指定なし --> <picture> <source media="(min-width: 1200px)" srcset="/images/large/sample_12.jpg"> <img loading="lazy" src="/images/sample_12.jpg" alt=""> </picture>
//loading 属性がサポートされていれば if ('loading' in HTMLImageElement.prototype) { //loading 属性に lazy が指定されている img 要素 const images = document.querySelectorAll('img[loading="lazy"]'); //data-srcset が指定されている img 要素 const img_srcset = document.querySelectorAll("img[data-srcset]"); //data-srcset が指定されている source 要素 const sources = document.querySelectorAll("source[data-srcset]"); //loading="lazy" が設定されている要素があれば if(images.length > 0) { images.forEach(img => { //data-src 属性が設定されていれば img 要素の src 属性の値に data-src 属性の値を設定 if(img.dataset.src) { img.src = img.dataset.src; } }); } //data-srcset が指定されている img 要素があれば if(img_srcset.length > 0) { img_srcset.forEach(img_srcset => { //img 要素の srcset 属性の値に data-srcset 属性の値を設定 img_srcset.srcset = img_srcset.dataset.srcset; }); } //picture 要素 //data-srcset が指定されている source 要素があれば if(sources.length > 0){ sources.forEach(source => { //source 要素の srcset 属性の値に data-srcset 属性の値を設定 source.srcset = source.dataset.srcset; }); } } else { //loading 属性がサポートされていない場合は動的に lazysizes ライブラリーを読み込む // script 要素を生成 const script = document.createElement('script'); //ダウンロードしてある lazysizes を script 要素の src に指定 script.src = 'lazysizes.min.js'; //script 要素を body に追加 document.body.appendChild(script); }