按照惯例,img图片预加载 平时我们都会使用
第一种方法:
直接使用
var img = new Image(); //创建一个Image对象,实现图片的预下载
img.onload =function(){
.........
}
img.url = '图片路径';
if(img.complete){ // 如果图片已经存在于浏览器缓存,直接调用回调函数
img.onload();
}
这种写法在如果是本地图片是有效的,网络图片则无法正确获取到<img>的属性
第二种方法:
也是网上不常说的方法
function loadImage(url, callback) {
var img = new Image(); //创建一个Image对象,实现图片的预下载
img.src = url;
if (img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数
callback.call(img);
return; // 直接返回,不用再处理onload事件
}
img.onload = function () { //图片下载完毕时异步调用callback函数。
callback.call(img);//将回调函数的this替换为Image对象
};
}
调用:
loadImage('图片路径',function(e){
alert(e.width+"===========>"+e.height)
})
这种写法结果同上:如果是本地图片是有效的,网络图片则无法正确获取到<img>的属性
接下来,就要开始放大招了,不管是本地图片还是网络图片,均能准确的获取到<img>的正确属性。
第三种方法: