js的 image 属性 和一个预加载模块

创建一个Image对象:var a=new Image();    定义Image对象的src: a.src=”xxx.gif”;    这样做就相当于给浏览器缓存了一张图片。

图像对象:

建立图像对象:图像对象名称=new Image([宽度],[高度])

图像对象的属性: border complete height hspace lowsrc name src vspace width

图像对象的事件:onabort onerror onkeydown onkeypress onkeyup onload

需要注意的是:src 属性一定要写到 onload 的后面,否则程序在 IE 中会出错。

‘use strict‘;

/**
 * 预加载图片函数
 * @param {Object} images 加载图片的数组或者对象
 * @param {Object} callback    全部图片加载完毕后调用的回调函数
 * @param {Object} timeout  加载超时的时长
 */
function loadImage(images,callback,timeout){
    //加载完成图片的计数器
    var count = 0;
    //全部图片加载成功的一个标志位
    var success = true;
    //超时timer的id
    var timeoutId = 0;
    //是否加载超时的标志位
    var isTimeout = false;
    //对图片数组(或者对象)进行遍历
    for(var key in images) {
        //过滤prototype上的属性
        if(!images.hasOwnProperty(key)){
            continue;
        }
        //获取每个图片元素
        //期望格式是个object:{src:xxx}

        var item = images[key];

        if(typeof item === ‘string‘){
            item = iamges[key] = {src:item};
        }
        //如果格式不满足期望,则丢弃那条向下遍历
        if( !item || !item.src){
            continue;
        }

        //计数+1
        count++;

        //设置图片元素的id
        item.id = ‘__img__‘ + key + getId();
        //设置图片元素的img,它是一个Image对象
        item.img = window[item.id] = new Image();

        doLoad(item);
    }
    //遍历完成如果计数位0,则直接返回
    if(!count){
        callback(success);
    }else if(timeout) {
        timeoutId = setTimeout(onTimeout,timeout);
    }

    /**
     * 真正进行图片加载的函数
     * @param {Object} item 图片元素对象
     */
    function doLoad(item){
        item.status = ‘loading‘;
        var img = item.img;
        //定义图片加载成功的回调函数
        img.onload = function(){
            success = success & true;
            item.status = ‘loaded‘;
            done();
        };

        //定义图片加载失败的回调函数
        img.onerror = function(){
            success = false;
            item.status = ‘error‘;
            done();
        };

//        发起了一个http(s)发起请求
        img.src = item.src;
        /**
         * 每张图片加载完成的回调函数
         */
        function done(){
            img.onload = img.onerror = null;
            try{
                delete window[item.id];
            }catch(e){

            }
            /**
             * 每张图片加载完成,计数器减一,当所有图片加载完成且没有超时的情况清除超时技数器
             */
            if(!--count && !isTimeout) {
                clearTimeout(timeoutId);
                callback(success);
            }

        }
    }
    /**
     * 超时函数
     */
    function onTimeout(){
        isTimeout = true ;
        callback (false)
    }
}

var __id = 0;
function getId(){
    return ++_id;
}
module.exports = loadImage;
时间: 2024-08-28 09:13:52

js的 image 属性 和一个预加载模块的相关文章

python 在初始化运行环境时所有预加载模块

python 在初始化运行环境时,会预加载一批内建模块到内存. 所有预加载模块如下: 1 >>> for item in sys.modules.items(): 2 ... print item 3 ... 4 ('copy_reg', <module 'copy_reg' from '/Users/Kris/git_space/pyv/lib/python2.7/copy_reg.pyc'>) 5 ('encodings', <module 'encodings'

详解HTML5中rel属性的prefetch预加载功能使用

在HTML5中,有个很有用但常被忽略的特性,就是预先加载(prefetch),它的原理是: 利用浏览器的空闲时间去先下载用户指定需要的内容,然后缓存起来,这样用户下次加载时,就直接从缓存中取出来,效率就快了. 举个例子说明:比如要预先加载某个页面,可以这样: XML/HTML Code <link rel="prefetch" href="http://www.example.com/"> <!-- Firefox --> 但如果是googl

利用CSS、JavaScript及Ajax实现图片预加载的三大方法

原文:3 Ways to Preload Images with CSS, JavaScript, or Ajax 译文:利用CSS.JavaScript及Ajax实现图片预加载的三大方法 预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布,也可帮助用户在浏览你网站内容时获得更好的用户体验.本文将分享三个不同的预加载技术,来增强网站的性能与可用性.

利用CSS、JavaScript及Ajax实现图片预加载的三大方法及优缺点分析

预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布,也可帮助用户在浏览你网站内容时获得更好的用户体验.本文将分享三个不同的预加载技术,来增强网站的性能与可用性. 方法一:用CSS和JavaScript实现预加载 实现预加载图片有很多方法,包括使用CSS.JavaScript及两者的各种组合.这些技术可根据不同设计场景设计出相应的解决方案,十分高效.

关于图片预加载1

预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布,也可帮助用户在浏览你网站内容时获得更好的用户体验.本文将分享三个不同的预加载技术,来增强网站的性能与可用性. 方法一:用CSS和JavaScript实现预加载 实现预加载图片有很多方法,包括使用CSS.JavaScript及两者的各种组合.这些技术可根据不同设计场景设计出相应的解决方案,十分高效.

html预加载

预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据 很大比例的网站来说十分有利,它保证了图片快速.无缝地发布,也可帮助用户在浏览你网站内容时获得更好的用户体验.本文将分享三个不同的预加载技术,来增 强网站的性能与可用性. ? ? ? 方法一:用CSS和JavaScript实现预加载 ? ? ? 实现预加载图片有很多方法,包括使用CSS.JavaScript及两者的各种组合.这些技术可根据不同设计场景设计

实现图片的预加载和懒加载

延迟加载也称为惰性加载,即在长网页中延迟加载图像.用户滚动到它们之前,视口外的图像不会加载.这与图像预加载相反,在长网页上使用延迟加载将使网页加载更快.在某些情况下,它还可以帮助减少服务器负载. 那么延迟加载有什么好处:1.提升用户的体验,避免出现卡顿现象.2.有选择性地请求图片,减少服务器的压力和流量,减小浏览器的负担. 实现方式:1.首先将页面上的图片的 src 属性设为 loading.gif,而图片的真实路径则设置在 data-src 属性中,页面滚动的时候计算图片的位置与滚动的位置,当

利用简洁的图片预加载组件提升h5移动页面的用户体验

在做h5移动页面,相信大家一定碰到过页面已经打开,但是里面的图片还未加载出来的情况,这种问题虽然不影响页面的功能,但是不利于用户体验.抛开网速的原因,解决这个问题有多方面的思路:最基本的,要从http请求合并,缓存管理,图片压缩等方面做性能优化:另外就是可以对页面里用到的所有图片做预加载的处理,当用户打开页面的时候不立即显示第一屏,而是先显示资源加载效果,等到加载完毕,再来显示页面的主内容,这样就能解决那个问题.虽然这种加载效果占用了用户的浏览时间,但是我们可以把它做的好看有趣一点,所以也不会影

使用CSS、JavaScript及Ajax实现图片预加载的方法详解 

预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布,也可帮助用户在浏览你网站内容时获得更好的用户体验.本文将分享使用CSS.JavaScript及Ajax实现图片预加载的三个不同技术,来增强网站的性能与可用性.一起来看看吧,希望对大家学习web前端有所帮助. 方法一:用CSS和JavaScript实现预加载 实现预加载图片有很多方法,包括使用CSS