Większość wyszukiwarek indeksuje obrazy, które są ukryte, o ile nie używasz stylów wbudowanych do ukrywania obrazu. Większość przeglądarek nie ładuje ukrytych obrazów.
Istnieje strona testowa, która może zweryfikować to roszczenie. Niektóre starsze przeglądarki mobilne są wyjątkiem, ale uważam, że leniwe ładowanie na telefony komórkowe może być szkodliwe dla dobrego przeglądania.
http://www.w3.org/2009/03/image-display-none/test.php
W swoim pliku CSS dodaj następującą modyfikację.
.lazy-img { display: none; }
Teraz możesz załadować stronę z takimi leniwymi obrazami, jak te, które zostaną zindeksowane.
<body>
<img class="lazy-img" src="img1.jpeg" title="image title"/>
<img class="lazy-img" src="img2.jpeg" title="image title"/>
<img class="lazy-img" src="img3.jpeg" title="image title"/>
<img class="lazy-img" src="img4.jpeg" title="image title"/>
</body>
Ważne jest, aby dołączyć title
atrybut obrazu. Lub otaczasz <img
> znacznik linkiem <a
> znacznikiem i tekstem łącza. W przeciwnym razie wyszukiwarki powiążą słowa kluczowe z obrazem według odległości słowo. Masz problem z SEO, który równie dobrze możesz przejść.
Jeśli użyjesz powyższego, jak jest. Nic nie będzie wyświetlane, ponieważ obrazy są ukryte. Chcesz usunąć tę klasę na dole dokumentu. Kluczem tutaj jest użycie wbudowanego czystego Javascript. JavaScript jest wykonywany natychmiast po zakończeniu układu powyższych elementów. Jeśli załadujesz wszystkie zewnętrzne pliki JS na dole (tak jak powinieneś). Powinieneś umieścić ten blok JavaScript nad tymi plikami. Aby nie było opóźnień w modyfikacji DOM.
<body>
<!--[if lte IE 8]
<style type="text/css">.lazy-img { display: block !important; }</style>
[endif]-->
<noscript><style type="text/css">.lazy-img { display: block !important; }</style></noscript>
<img class="lazy-img" src="img1.jpeg" title="image title"/>
<img class="lazy-img" src="img2.jpeg" title="image title"/>
<img class="lazy-img" src="img3.jpeg" title="image title"/>
<img class="lazy-img" src="img4.jpeg" title="image title"/>
<![if gte IE 9]>
<script type="text/javascript">
var images = document.getElementsByClassName('lazy-img');
Array.prototype.forEach.call(images, function(image){
image.setAttribute("data-src",image.getAttribute("src"));
image.setAttribute("src","loading.gif");
});
while(images.length > 0) { images[0].className = ""; }
</script>
<![endif]>
</body>
Teraz dodałem warunkowe dla IE9, ponieważ nie obsługuje ono wersji getElementsByClassName
8 i starszych. To, co powinno się zdarzyć (nie przetestowane), to, że te przeglądarki po prostu załadują obraz tak, jak jest.
Zaletą tego podejścia jest utrzymanie HTML-a w czystości z perspektywy webcrawlera.