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