图片延迟加载的实现

    技术2022-05-20  81

    有时候,我们的一个网页上会包含很多张图片。这些图片有可能都是存在一台服务器上,使用同一个域名,如img.com。虽然现在的浏览器在加载图片时,可以同时打开多个线程去拉取图片,但是如果图片太多的话依然会产生阻塞。

    解决办法有以下几种:

    1.将这些图片放到不同的域名下;

    2.如果这些图片不是处于首屏,那么可以延迟加载。这里面又有两种方式:

    a)当滚动条滚动快要滚动到该图片的位置时,加载图片。采用这种技术的如淘宝网;

    b)先不加载图片,而当页面load完成时再去加载。如腾讯汽车的车型大全首页(嘿嘿,王婆卖瓜了)

     

    本文主要讲2.b方法。比较简单,直接贴代码了

    <html> <body> <img __src="http://mat1.gtimg.com/datalib_img/car_manufacturer/pic/info/2010-10-09/2010100914313077099040512.jpg" /> <img __src="http://mat1.gtimg.com/datalib_img/car_manufacturer/pic/info/2009-06-09/2009060918214869197640512.jpg" /> <img __src="http://mat1.gtimg.com/datalib_img/car_manufacturer/pic/info/2010-09-02/2010090215064444515840512.jpg" /> <mce:script language="Javascript"><!-- var FBrowser=(function(){ var ua = navigator.userAgent; var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]'; return { isIE: !!window.attachEvent && !isOpera, isOpera: isOpera, isSafari: ua.indexOf('AppleWebKit/') > -1, isFirefox: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1, MobileSafari: /Apple.*Mobile.*Safari/.test(ua), isChrome: !!window.chrome }; })(); FBrowser.isIE6=FBrowser.isIE&&!window.XMLHttpRequest; FBrowser.isIE7=FBrowser.isIE&&!!window.XMLHttpRequest; function add_loadEvent(func) { var oldonload = window.onload; if(typeof window.onload != 'function') { window.onload = func; } else { window.onload = function(){ oldonload(); func(); }; } } function set_imgsrc() { var img_arr = document.getElementsByTagName('img'); var count = img_arr.length; for(var i=0; i<count; ++i) { if(FBrowser.isIE) { img_arr[i].src = img_arr[i].__src; }else { img_arr[i].src = img_arr[i].getAttribute('__src'); } } } add_loadEvent(set_imgsrc); // --></mce:script> </body> </html>


    最新回复(0)