js 一個(gè)關(guān)于圖片onload加載的事
首先先明確一下我要的目的:
當(dāng)用戶進(jìn)入頁面的時(shí)候,顯示loading 加載圖標(biāo),等最大的圖片加載之后再opacity 圖片;
功能很簡單,但是我沒完全做出來;
在做的時(shí)候,第一時(shí)間我自然想到了如下的方法:
$(function(){
$('.banner img').load(function(){
console.log('已經(jīng)加載')
});
});
熟話說的好呀,自信心太膨脹,到頭來打擊很大了;我以為這樣就可以了,然后看了一遍之后拿給老大,老大點(diǎn)了兩下,說一直不加載出來了,loading 轉(zhuǎn)轉(zhuǎn)轉(zhuǎn)的就是出不來,我說不應(yīng)該呀,然后自己試一下,果真如此。
接著找了一下資料,發(fā)現(xiàn)上面說是緩存的原因,因?yàn)閘oad加載的時(shí)候有限瀏覽器會因?yàn)榫彺娌粫|發(fā)load事件;沒果;我就發(fā)了一個(gè)狠招:
window.onload=function(){
console.log('已經(jīng)加載')
};
嘿嘿,這樣還不行,我頂你個(gè)肺了;然后自信心又彭臟了,拿給老大,老大說行,第二天,客戶來電說頁面不加載,一個(gè)loading一直轉(zhuǎn)轉(zhuǎn)轉(zhuǎn)的;我無語的回答他說:應(yīng)該是你們那網(wǎng)速太慢了。。。你在等等,過了一下他答:說這樣不行,雖然出來了,但等太久了;能不能讓時(shí)間稍微少一點(diǎn);
無奈,我就只能各種壓縮圖片呀,壓完之后,他還是覺得不太理想;老大說這樣可以了,現(xiàn)在項(xiàng)目還只是扔在空間上,這空間本來很慢,如果他網(wǎng)速慢,加載的時(shí)間自然也慢了。
老大說是這樣說呀,任務(wù)還是沒完成啊,絞盡腦汁,偶然看到一個(gè)外國網(wǎng)站的輪播圖jq 插件,我下下來看了一下源碼,接著就誕生出了以下招數(shù):
var oImg = $('.banner img:eq(0)');
oImg.attr('src')+'?'+(new Date()).getTime();
oImg.load(function(){
console.log('已經(jīng)加載')
});
經(jīng)過測試很正常,這個(gè)意思就是,在進(jìn)入頁面的時(shí)候,把圖片的地址加一個(gè)時(shí)間,這樣每次加載的時(shí)候就不會有緩存;而且也只是加載一張圖,一張加載完之后其他就不管;
經(jīng)過改正,也沒跟老大說就傳了上去;這次我也不敢大意,就一直在測,這一測就測出不是問題的問題了;
因?yàn)轫撁婕虞d的時(shí)候圖片路徑每次都會不同,所以每次都會去加載,消耗的時(shí)間跟第一次加載等同;那不就是說進(jìn)入一次就要加載一次嗎?
我暈.........
經(jīng)過數(shù)十次的嘗試,苦逼的我,終于找到了一個(gè)完敗上面所有方法的辦法 了:
function imgloading(){
console.log('已經(jīng)加載')
}
//頁面調(diào)用
<img src="1.jpg" onload="imgloading();"/>
這樣就可以解決掉圖片緩存了,還是會觸發(fā)load事件;雖然我還不是具體理解這個(gè);不過聽別人說,這還是因?yàn)轫撁婕虞d的原因;
眾所周知網(wǎng)頁是從上往下加載的;當(dāng)加載到img的時(shí)候,我在ready里面獲取img 元素其實(shí)是取不到的;當(dāng)頁面繼續(xù)往下加載,經(jīng)過img之后,當(dāng)前的img就代表加載完畢了,既然加載完畢,我想都加載了,介個(gè)load還有用嗎?
而上述的方法不難看出,頁面仔加載到img 的時(shí)候碰到了onload方法,它就知道了這個(gè)圖片必須要加載之后才出現(xiàn)。
好了。。。不知道有沒有同行遇到了本苦逼這樣的事情,是否找到了比這個(gè)更加完美的解決方案。。如果你有更完美的辦法,請一定要留言告知呀,萬分感謝,我總感覺還是有更加好的方法的。。。
相關(guān)文章
javascript cookie操作類的實(shí)現(xiàn)代碼小結(jié)附使用方法
javascript cookie操作類的實(shí)現(xiàn)代碼小結(jié)附使用方法,對于cookies操作不是很熟悉的朋友可以參考下。2010-06-06
Javascript Tab 導(dǎo)航插件 (23個(gè))
實(shí)現(xiàn)tab頁很多方法,有一些是用純CSS實(shí)現(xiàn),其他大多數(shù)是基于jquery、mootools或者其他js框架實(shí)現(xiàn),既然有這么多可以拿來即用的插件,又何苦重復(fù)造輪子。2009-06-06
JavaScript 數(shù)組的進(jìn)化與性能分析
這篇文章主要介紹了JavaScript 數(shù)組的進(jìn)化與性能分析,本文講得更多的是內(nèi)存、優(yōu)化、語法差異、性能、近來的演進(jìn)。需要的朋友可以參考下2017-09-09
JS字符串和數(shù)組如何實(shí)現(xiàn)相互轉(zhuǎn)化
這篇文章主要介紹了JS字符串和數(shù)組如何實(shí)現(xiàn)相互轉(zhuǎn)化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
一次微信小程序內(nèi)地圖的使用實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于一次微信小程序內(nèi)地圖使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用微信小程序具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09

