最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript & jQuery完美判斷圖片是否加載完畢

 更新時(shí)間:2017年01月08日 16:56:07   作者:辰陽  
本文主要介紹了JavaScript & jQuery完美判斷圖片是否加載完畢的方法。具有一定的參考價(jià)值,下面跟著小編一起來看下吧

眾所周知,常見瀑布流當(dāng)鼠標(biāo)滾動(dòng)到瀏覽器底部的時(shí)候,就會(huì)發(fā)起一個(gè)ajax的請(qǐng)求。在服務(wù)端生成item列表后,通過 js append到相應(yīng)的div里邊。

看起來很簡(jiǎn)單的樣子,關(guān)鍵問題就出在圖片的加載問題上,圖片一般都放在服務(wù)器上,通過http下載到客戶端。

例如我的圖片地址:

http://xxx.xxx.com/sc/item/cover/9-4352-c400.jpg

而圖片下載到本地是需要一定時(shí)間的(網(wǎng)速快的路過)。當(dāng)圖片還沒有下載完的時(shí)候,使用js獲取到元素的寬高將會(huì)是0

有的同學(xué)說了我使用jquery的ready不就好了。如下

$(document).ready(function(){
 // 在這里寫你的代碼...
});

如果這么簡(jiǎn)單就好了,我這里就說下ready與window.onload的區(qū)別。

jquery的ready只是dom的結(jié)構(gòu)加載完畢,便視為加載完成。(缺點(diǎn)是圖片沒有加載完畢,寬高為0,程序出錯(cuò))

js的window.onload是指dom的生成和資源的加載,比如flash、圖片完全加載出來后才執(zhí)行onload。(缺點(diǎn)就是當(dāng)某一張圖片很大的時(shí)候,豈不阻止了其它js的正常執(zhí)行)

知道了他們的區(qū)別后,我們?cè)賮碚務(wù)勅绾伪苊忮e(cuò)誤和選擇性使用。

如果你進(jìn)行了百度,很多人會(huì)告訴你。

這樣:

$('img').load(function(){
 // 加載完成 
});

好像很強(qiáng)大的樣子,其實(shí)不然,他的缺點(diǎn)是每加載一張圖片,回調(diào)函數(shù)就執(zhí)行一次。好吧太煩了,我只想全部加載完走一次就可以了。當(dāng)然可以,你可以進(jìn)行修改如下:

va imgNum=$('img').length;
$('img').load(function(){
 if(!--imgNum){
 // 加載完成
 }
});

這樣總可以了吧,我加載一張,就用圖片總數(shù)去減一,減到0我就加載完畢??雌饋砗芡昝?,前提是你沒遇到IE。

IE的圖片總是從緩存文件里去拿,這就造成load方法根本就不執(zhí)行,只有是新圖片才會(huì)走load。

服了吧?繼續(xù)往下看。

或者是這樣:

document.getElementById('img').onload=function(){
 // 加載完成 
};

看我原生代碼一統(tǒng)天下,實(shí)際上效果甚微,一次只能處理一個(gè)你準(zhǔn)備寫多少個(gè)document,有人說我可以用循環(huán)去綁定,經(jīng)過我測(cè)試貌似根本沒效果。

還是一笑而過吧。看看我的最終解決方案(兼容:谷歌&火狐&IE)

利用圖片沒有加載完成的時(shí)候,寬高為0。我們很容易判斷圖片的一個(gè)加載情況。如下:

var t_img; // 定時(shí)器
var isLoad = true; // 控制變量
// 判斷圖片加載狀況,加載完成后回調(diào)
isImgLoad(function(){
 // 加載完成
});
// 判斷圖片加載的函數(shù)
function isImgLoad(callback){
 // 注意我的圖片類名都是cover,因?yàn)槲抑恍枰幚韈over。其它圖片可以不管。
 // 查找所有封面圖,迭代處理
 $('.cover').each(function(){
 // 找到為0就將isLoad設(shè)為false,并退出each
 if(this.height === 0){
 isLoad = false;
 return false;
 }
 });
 // 為true,沒有發(fā)現(xiàn)為0的。加載完畢
 if(isLoad){
 clearTimeout(t_img); // 清除定時(shí)器
 // 回調(diào)函數(shù)
 callback();
 // 為false,因?yàn)檎业搅藳]有加載完成的圖,將調(diào)用定時(shí)器遞歸
 }else{
 isLoad = true;
 t_img = setTimeout(function(){
 isImgLoad(callback); // 遞歸掃描
 },500); // 我這里設(shè)置的是500毫秒就掃描一次,可以自己調(diào)整
 }
}

看了我的代碼,你是否也有了自己的想法呢?

 以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • 5個(gè)最佳的Javascript日期處理類庫(kù)分享

    5個(gè)最佳的Javascript日期處理類庫(kù)分享

    在大家日常網(wǎng)站開發(fā)和web應(yīng)用開發(fā)中,我們往往需要有效的調(diào)用Javascript處理日期和時(shí)間格式相關(guān)的函數(shù),在Javascript中已經(jīng)包含了部分最基本的內(nèi)建處理方法
    2012-04-04
  • js圖片放大鏡實(shí)例講解(必看篇)

    js圖片放大鏡實(shí)例講解(必看篇)

    下面小編就為大家?guī)硪黄猨s圖片放大鏡實(shí)例講解(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 手把手教你寫一個(gè)微信小程序(推薦)

    手把手教你寫一個(gè)微信小程序(推薦)

    最近接了一個(gè)微信小程序的項(xiàng)目,項(xiàng)目需求是小程序語音識(shí)別,全景圖片觀看,登錄授權(quán),獲取個(gè)人基本信息。非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-10-10
  • JavaScript實(shí)現(xiàn)廣告的關(guān)閉與顯示效果實(shí)例

    JavaScript實(shí)現(xiàn)廣告的關(guān)閉與顯示效果實(shí)例

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)廣告的關(guān)閉與顯示效果,涉及javascript廣告窗口的關(guān)閉與顯示效果實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-07-07
  • 多個(gè)js毫秒倒計(jì)時(shí)同時(shí)進(jìn)行效果

    多個(gè)js毫秒倒計(jì)時(shí)同時(shí)進(jìn)行效果

    這篇文章主要以實(shí)例的方式講解多個(gè)js毫秒倒計(jì)時(shí)同時(shí)進(jìn)行效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • JS中判斷null、undefined與NaN的方法

    JS中判斷null、undefined與NaN的方法

    這篇文章主要介紹了JS中判斷null、undefined與NaN的方法,需要的朋友可以參考下
    2014-03-03
  • JS模擬面向?qū)ο笕猓ǘ㈩愋团c賦值)

    JS模擬面向?qū)ο笕猓ǘ㈩愋团c賦值)

    上次,我講了有關(guān)類型區(qū)別和傳遞的問題,現(xiàn)在,我給大家在插上一點(diǎn)有關(guān)類型賦值的問題。
    2011-07-07
  • javascript數(shù)組拍平方法總結(jié)

    javascript數(shù)組拍平方法總結(jié)

    本篇文章給大家詳細(xì)分析了javascript數(shù)組拍平的方法,對(duì)此有興趣的朋友跟著小編一起學(xué)習(xí)下吧。
    2018-01-01
  • JS?for?in遍歷對(duì)象順序不對(duì)解決辦法

    JS?for?in遍歷對(duì)象順序不對(duì)解決辦法

    最近使用for-in語句遍歷對(duì)象屬性時(shí)發(fā)現(xiàn)遍歷順序并非屬性構(gòu)建順序,這篇文章主要給大家介紹了關(guān)于JS?for?in遍歷對(duì)象順序不對(duì)的解決辦法,需要的朋友可以參考下
    2023-11-11
  • 原生js封裝無縫輪播功能

    原生js封裝無縫輪播功能

    這篇文章主要為大家詳細(xì)介紹了原生js封裝無縫輪播功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05

最新評(píng)論

弥渡县| 临夏县| 绩溪县| 保山市| 沙坪坝区| 唐海县| 财经| 和硕县| 新乡市| 临汾市| 普定县| 游戏| 华容县| 仁怀市| 固原市| 盖州市| 堆龙德庆县| 刚察县| 宜阳县| 本溪市| 仪陇县| 乡城县| 九龙城区| 芦山县| 宁蒗| 北安市| 阿坝县| 新巴尔虎右旗| 达州市| 西吉县| 湘西| 漠河县| 吴江市| 海阳市| 济源市| 遂昌县| 绥棱县| 同德县| 奉化市| 乐都县| 定兴县|