zoukankan      html  css  js  c++  java
  • 图片预加载小记

    今天稍微看了下图片预加载的运用,相关的技术文章google一下有很多,自己也记录一下,方便以后自己查看.

    做个小例子,效果如下:

    代码如下,比较简单

    1 .loading {
    2     background: #E8FFFA url(image/ajax-loader.gif) no-repeat center center;
    3 }
    1 <img id="image" class="loading" src="http://liwenbo200.w227.10te.net/uploads/allimg/091125/10355M3E-3.jpg" alt="large picture" height="200" width="400" />
     1 (function() {
     2     var img = document.getElementById("image");         
     3     img.onload = function() {
     4         // onload事件触发时 image的状态
     5         console.log('onload:' + this.complete);
     6         
     7         setTimeout(function() {
     8             // image加载完后的状态
     9             console.log('after onload:' + img.complete);
    10         }, 1000);
    11         
    12         // 简单的去除image的样式
    13         this.className = '';
    14     }
    15     // onload事件触发前 image的状态
    16     console.log("before load:" + img.complete);
    17 })();

    代码不多很简单.

    • chrome浏览器,无论是否缓存:before load: false, onload: true, after load: true

    • firefox,无缓存的情况:before load: false, onload: true, after load: true

    • firefox,有缓存的情况:before load: true, onload: true, after load: true

    • IE9,有无缓存跟chrome一致

    • IE6~8,我测出来有点奇怪,我用IE9进行模式切换,不管有无缓存, before load: false, onload: false, after load: true. 而且是在image快要加载结束时(还有一小块没加载完)就调用了onload事件,觉得有点奇怪,应该是浏览器实现的bug吧

    这里还有一篇动态获取图片尺寸的文章,再谈javascript图片预加载技术,感觉写的不错在此留个记号. 但是里面有个注释有点小问题,这个问题也是通过朋友指点才明白的,其中有段代码如下:

    1 // 如果图片被缓存,则直接返回缓存数据
    2 if (img.complete) {
    3     ready.call(img);
    4     load && load.call(img);
    5     return;
    6 };

    要说明的是,其实img.complete是否为true和缓存没关系,事实上每次打开页面图片总要经过load的过程,complete状态才会变true,有没有缓存只能 说明浏览器是从网络加载还是从缓存加载图片....所以这里的注释有所误导, 代码本身的逻辑是没问题的.

    最后欢迎大家留言谈论,共同进步

  • 相关阅读:
    强制类型转换
    《thinking in java》 接口与内部类
    JAVA强制类型转换(转载+自己的感想)
    Java 面试题问与答:编译时与运行时
    Java注解处理器
    Java反射详解
    BZOJ5072:[Lydsy1710月赛]小A的树(树形DP)
    BZOJ4987:Tree(树形DP)
    BZOJ3791:作业(DP)
    BZOJ1972:[SDOI2010]猪国杀(模拟)
  • 原文地址:https://www.cnblogs.com/AndyWithPassion/p/image_preload_note.html
Copyright © 2011-2022 走看看