人妻夜夜爽天天爽三区丁香花-人妻夜夜爽天天爽三-人妻夜夜爽天天爽欧美色院-人妻夜夜爽天天爽免费视频-人妻夜夜爽天天爽-人妻夜夜爽天天

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

js如何控制一次只加載一張圖片,加載完成后再加載下一張

admin
2025年1月13日 10:46 本文熱度 257

今天看到一個(gè)面試題,是關(guān)于img圖片加載方面的,有必要記錄一下。其實(shí)關(guān)于這個(gè)問題,只要知道圖片什么時(shí)候加載完成就能解決了。

通過onload事件判斷Img標(biāo)簽加載完成

實(shí)現(xiàn)邏輯:新建一個(gè)Image對(duì)象實(shí)例,為實(shí)例對(duì)象設(shè)置src屬性等,在onload事件中添加此實(shí)例對(duì)象到父元素中,然后將圖片地址數(shù)組中的第一個(gè)元素剔除,繼續(xù)調(diào)用此方法直到存儲(chǔ)圖片地址的數(shù)組為空。

代碼

const imgArrs = [...]; // 圖片地址const content = document.getElementById('content');const loadImg = () => {  if (!imgArrs.length)  return;  const img = new Image(); // 新建一個(gè)Image對(duì)象  img.src = imgArrs[0];  img.setAttribute('class', 'img-item');  img.onload = () => { // 監(jiān)聽onload事件    // setTimeout(() => { // 使用setTimeout可以更清晰的看清實(shí)現(xiàn)效果      content.appendChild(img);        imgArrs.shift();        loadImg();    // }, 1000);  }  img.onerror = () => {    // do something here  }}  loadImg();
</script>

實(shí)現(xiàn)效果

加上setTimeout后,看到的效果更加明顯,我這里加了500毫秒的延遲(錄屏軟件只支持錄制8秒的時(shí)間...)

其實(shí)我在網(wǎng)上還看到了一種答案,通過onreadystatechange事件實(shí)現(xiàn)監(jiān)聽,于是在我本地調(diào)試了一下,發(fā)現(xiàn)并不能實(shí)現(xiàn),img實(shí)例對(duì)象上并沒有這個(gè)屬性方法。查了查MDN,發(fā)現(xiàn)目前僅有XmlHttpRequest對(duì)象和Document對(duì)象中存在onreadystatechange屬性,而對(duì)于其它元素onreadystatechange此屬性并不存在。

「因此對(duì)于其它元素需要慎用onreadystatechange事件」

不過我電腦上目前只有ChormeSafari兩種瀏覽器,對(duì)于onreadystatechange測試的覆蓋面不全,所以我上面的結(jié)論可能還需要進(jìn)一步驗(yàn)證才行,感興趣的掘友可以調(diào)試一下~。

擴(kuò)展知識(shí)

img標(biāo)簽是什么時(shí)候發(fā)送圖片資源請(qǐng)求的?

  1. HTML文檔渲染解析,如果解析到img標(biāo)簽的src時(shí),瀏覽器就會(huì)立刻開啟一個(gè)線程去請(qǐng)求圖片資源。

  2. 動(dòng)態(tài)創(chuàng)建img標(biāo)簽,設(shè)置src屬性時(shí),即使這個(gè)img標(biāo)簽沒有添加到dom元素中,也會(huì)立即發(fā)送一個(gè)請(qǐng)求。

// 例1:const img = new Image();img.src = 'http://xxxx.com/x/y/z/ccc.png';

上面的代碼如果運(yùn)行起來后,就會(huì)發(fā)送請(qǐng)求。 如圖:

再看一個(gè)例子:創(chuàng)建了一個(gè)div元素,然后將存放img標(biāo)簽元素的變量添加到div元素內(nèi),而div元素此時(shí)并不在dom文檔中,頁面不會(huì)展示該div元素,那么瀏覽器會(huì)發(fā)送請(qǐng)求嗎?

// 例2:const img = `<img src='http://xxxx.com/x/y/z/ccc.png'>`;const dom = document.createElement('div');dom.innerHTML = img;

答案:會(huì)請(qǐng)求。如圖:

通過設(shè)置css屬性能否做到禁止發(fā)送圖片請(qǐng)求資源?

  1. img標(biāo)簽設(shè)置樣式display:none或者visibility: hidden,隱藏img標(biāo)簽,無法做到禁止發(fā)送請(qǐng)求。

<img src="http://xxx.com/x/sdf.png" style="display: none;">或者<img src="http://xxx.com/x/sdf.png" style="visibility: hidden;">

  1. 將圖片設(shè)置為元素的背景圖片,但此元素不存在,可以做到禁止發(fā)送請(qǐng)求。

<!DOCTYPE html><html lang='en'><head>    <meta charset='UTF-8'>    <title></title>    <style>        .test {            height: 200px;            background-image: url('http://eb118-file.cdn.bcebos.com/upload/39148b2a545b48bf9b4ee95fd1b7f1eb_1515564089.png?');        }    </style></head><body></body></html>

dom文檔中不存在test元素時(shí),即使設(shè)置了背景圖片,也不會(huì)發(fā)送請(qǐng)求,只有test元素存在時(shí)才會(huì)發(fā)送請(qǐng)求。

另外這個(gè)例子其實(shí)有點(diǎn)不太貼切,img標(biāo)簽background-image二者有著本質(zhì)的區(qū)別。一個(gè)屬于HTML標(biāo)簽,另一個(gè)屬于css樣式,加載機(jī)制和解析順序也不同。

?

一個(gè)完整的頁面是由jshtmlcss組成的,按照解析機(jī)制,html元素會(huì)優(yōu)先解析,盡管css樣式是放在head標(biāo)簽內(nèi)的,但也不意味著它會(huì)優(yōu)先加載,它只有等到html文檔加載完成后才會(huì)執(zhí)行。而img標(biāo)簽屬于網(wǎng)頁內(nèi)容,所以img標(biāo)簽會(huì)隨著網(wǎng)頁解析渲染優(yōu)先于css樣式表加載出來。

?

文章中若有描述不正確的地方,歡迎掘友們糾正~


閱讀原文:https://mp.weixin.qq.com/s/3K1tksZfiAFTfRzD9Q6ZyA


該文章在 2025/1/13 10:46:29 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 日韩一区二区三区视频在线播放 | 久久丫免费无码一区二区 | 久久久久久午夜成人影院 | 国产美女视频一区二区三区电影 | 中文字幕一区二区三区久久网站 | 丁香五月天婷婷综合开心 | 亚洲成av人片天堂网久久浪潮 | 国产精品成人h视频 | 久久久久中文字幕无码人妻 | 国产亚洲精品久久久无码网站 | 国产在线精品一区二区 | 亚洲精品乱码久久久久久日本麻豆 | 久久porn| 日韩精品无码一区二区三区三州 | 国产三级毛片 | 奇米精品视频一区二区三区 | 欧美日韩免费观看在线影片 | 国产三级日产三级韩国三级韩级 | 亚洲色无码A片一区二区麻豆 | 精品亚洲成人自拍 | 亚洲色成人网站www永久四虎 | 国产成人精品一区二区视频免费 | 国产成人精品免费青青草原 | 欧美日韩中文字幕久久 | 91久久国产口精品久久久久 | 日韩精品无码视频1区 | 无码缴情做A爱片毛片A片 | 国产大片成人啪av在线观看 | 国产精品人人爽人人做我的可爱 | 久久久久人妻精品区一三寸 | 国产aa夜夜欢一级黄色片 | 国产黄色在线免费观看 | 2024久久综合色播五月男人的天堂 | 麻豆高清免费国产一区 | 亚洲a∨无码成人精品区在线观看 | 国产女主播91 | 波多野结衣一区二区三区四区视频 | 狠狠色噜噜| 熟女少妇内射日韩亚洲 | 精品国产丝袜自在线拍国 | 大片免免费观看视频播放器在线观看 |