js获取图片高度时经常会获取的图片高度为0,原因是图片未加载完毕。第一次加载时,显示0(火狐等部分浏览器显示24)。待加载完毕后,再刷新,显示图片高度258。
var oImg = document.createElement("img");oImg.src = "http:////www.baidu.com/img/bdlogo.png";document.getElementsByTagName("body")[0].appendChild(oImg);console.log(oImg.height);
onload可以避免这种问题。
oImg.onload = function(){ console.log(this.height);};
jquery有类似方法。
$(oImg).load(function(){ console.log($(this).height());});
浏览器加载图片只加载一次,第二次则读取缓存。onload事件只在第一次加载过程中触发。如果我们无论图片是否存在缓存中都在图片加载完毕后执行某语句,则可利用img的complete属性。complete为true时,表示图片存在于缓存中。
if(oImg.complete){ console.log(oImg.height);}else{ oImg.onload = function(){ console.log(this.height); };}
新闻热点
疑难解答