zoukankan      html  css  js  c++  java
  • 【转】解决大量图片造成的页面延迟

    当页面上存在大量图片的时候,图片下载可能造成页面延迟。下面介绍一种解决这种问题的方法:

    function regImg(e,src){
        
    if(!window.imgHash) window.imgHash = new Object();
        
    var a = imgHash[src];
        
    e.onerror=null;
        
    if(a==null) {
            
    e.style.display="none";
            
    a=imgHash[src]=[];
            
    a[0]=new Image();
            
    a[1]=e;
            
    a[0].onload=function(){setImges(a)};
            
    a[0].src=src;
        
    }else{
            
    if(a[0].readyState=="complete")
                
    e.src=src;
            
    else{
                
    e.style.display="none";
                
    a[a.length]=e;
            
    }
        
    }
    }

    function setImges(a){
        
    for(var i=1;i<a.length;i++){
            
    a[i].src=a[0].src;
            
    a[i].style.display="";
        
    }
        
    a.length=1;
        
    a[0].onload=null;
    }


    用法举例:

    <img src="about:blank" onerror="regImg(this,'http://photo8.yupoo.com/20070625/121507_1495531449_m.jpg');" />

    程序分析:

    1、页面加载的时候,页面上的图片地址都是空白页面地址,那么也就是图片加载会出错,这时候就会以JS方式调用regImg来加载和显示图片。
    2、首先,建立一个imgHash页面hash对象。
    3、如果要加载的图片已经存在在imgHash对象里面,如果存在直接调用显示,如果还未加载完成,就将该位置的图片显示排队。
    4、如果要加载的图片在imgHash对象里面不存在,创建Image对象并加载src地址的图片,并将该图片的信息设置到imgHash对象。
    5、当src地址的图片加载完成,就将该图片地址全部是该src的显示队列全部显示出该图片。
    6、由于该程序使用了页面hash对象缓存图片对象,所以该程序不但解决了图片下载可能造成页面延迟问题,还可以避免重复加载图片。建议在发现图片下载造成页面延迟的情形下使用。

  • 相关阅读:
    如果使用EntityFramework6链接Mysql
    MongoDB联合查询 -摘自网络
    “TableDetails”中列“IsPrimaryKey”的值为DBNull. Mysql EntityFramework
    使用NPOI 转换Excel TO HTML (导出格式不如原生Excel好看)
    如何使用ODBC搭配dsn链接数据库
    Ubuntu16.04安装配置sublime text3
    ubuntu16.04编译安装php7.2
    ubuntu16.04安装flash player与谷歌浏览器(chrome)
    ubuntu16编译安装mysql5.7
    phpstorm+wamp+xdebug配置php调试环境
  • 原文地址:https://www.cnblogs.com/leeolevis/p/1618330.html
Copyright © 2011-2022 走看看