首页 > 代码库 > html+js实现图片预加载(异步加载)
html+js实现图片预加载(异步加载)
在前端设计时,为了让某县页面的图片即使缓存到浏览器中,一般使用预加载技术,但更为确切的应该称为异步加载,因为对线程不会造成阻塞。
核心代码
<script type="text/javascript"> function loadImage(id,src,callback) { var img = new window.Image(); //当图片成功加载到浏览器缓存 img.onload =function(evt) { if(typeof(img.readyState)==‘undefined‘) { img.readyState = ‘undefined‘; } //在IE8以及以下版本中需要判断readyState而不是complete if ((img.readyState==‘complete‘||img.readyState=="loaded")||img.complete==true) { callback({‘msg‘:‘ok‘,‘src‘:src,‘id‘:id}); }else{ img.onreadystatechange(e); } }; img.onerror = function(evt) { callback({‘msg‘:‘error‘,‘id‘:id}); } img.onreadystatechange = function(e) { //次方法只有IE8以及一下版本会调用 } img.src=http://www.mamicode.com/src;>深情的测试一下吧。
<!doctype html> <html> <head> <meta charset="utf-8" /> <title>异步(预加载)加载图片</title> <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1.0" /> </head> <body> <img src="http://www.mamicode.com/loading.gif" id="display_images"> <script type="text/javascript"> function loadImage(id,src,callback) { var img = new window.Image(); //当图片成功加载到浏览器缓存 img.onload =function(evt) { if(typeof(img.readyState)==‘undefined‘) { img.readyState = ‘undefined‘; } //在IE8以及以下版本中需要判断readyState而不是complete if ((img.readyState==‘complete‘||img.readyState=="loaded")||img.complete==true) { callback({‘msg‘:‘ok‘,‘src‘:src,‘id‘:id}); }else{ img.onreadystatechange(e); } }; img.onerror = function(evt) { callback({‘msg‘:‘error‘,‘id‘:id}); } img.onreadystatechange = function(e) { //次方法只有IE8以及一下版本会调用 } img.src=http://www.mamicode.com/src;>注意:这种用法过于简单,没有发挥出性能,请读者自行改造后,预加载20张1024*780图片,然后自动播放。如果是预加载的,播放时看不见卡顿或显示不完全的现象。
try doing it.
html+js实现图片预加载(异步加载)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。