只要您不使用内联样式来隐藏图像,大多数搜索引擎都会为隐藏的图像编制索引。大多数浏览器不会加载隐藏的图像。
有一个测试页可以验证此声明。某些较旧的移动浏览器是个例外,但我认为在手机上延迟加载可能会不利于良好的浏览体验。
http://www.w3.org/2009/03/image-display-none/test.php
在您的CSS文件中添加以下修改。
.lazy-img { display: none; }
现在,您可以使用这样的惰性图像加载页面,它们将被索引。
<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>
包括title
图像的属性很重要。或者,您可以<img
用链接<a
>标签和链接文本来包围>标签。否则,搜索引擎将通过单词距离将关键字与图像相关联。您将为SEO遇到所有这些麻烦,不妨一路走下去。
如果按原样使用上述内容。由于图像被隐藏,因此什么也不会显示。您要在文档底部删除此类。这里的关键是使用内联纯Javascript。上述元素的布局完成后,立即执行该Javascript。如果您将所有外部JS文件加载到底部(您应该这样做)。您应该将此Javascript块放在这些文件上方。因此,在修改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>
现在,我为IE9添加了条件文件,因为它getElementsByClassName
在8和更早的版本中不支持。应该发生(未经测试)的是那些浏览器只会按原样加载图像。
这种方法的优点是,从网络爬虫的角度来看,它可以使HTML保持整洁。