เครื่องมือค้นหาส่วนใหญ่จะจัดทำดัชนีรูปภาพที่ซ่อนอยู่ตราบใดที่คุณไม่ได้ใช้สไตล์อินไลน์เพื่อซ่อนภาพ เบราว์เซอร์ส่วนใหญ่จะไม่โหลดภาพที่ซ่อนอยู่
มีหน้าทดสอบที่สามารถตรวจสอบการอ้างสิทธิ์นี้ได้ เบราว์เซอร์มือถือรุ่นเก่าบางรุ่นนั้นเป็นข้อยกเว้น แต่ฉันโต้แย้งว่าการโหลดแบบขี้เกียจบนโทรศัพท์มือถืออาจเป็นการต่อต้านการสร้างประสบการณ์การเรียกดูที่ดี
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 ดูสะอาดจากมุมมองของ webcrawler