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);
};
}
