公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

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

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

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

通過onload事件判斷Img標簽加載完成

實現邏輯:新建一個Image對象實例,為實例對象設置src屬性等,在onload事件中添加此實例對象到父元素中,然后將圖片地址數組中的第一個元素剔除,繼續調用此方法直到存儲圖片地址的數組為空。

代碼

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

實現效果

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

其實我在網上還看到了一種答案,通過onreadystatechange事件實現監聽,于是在我本地調試了一下,發現并不能實現,img實例對象上并沒有這個屬性方法。查了查MDN,發現目前僅有XmlHttpRequest對象和Document對象中存在onreadystatechange屬性,而對于其它元素onreadystatechange此屬性并不存在。

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

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

擴展知識

img標簽是什么時候發送圖片資源請求的?

  1. HTML文檔渲染解析,如果解析到img標簽的src時,瀏覽器就會立刻開啟一個線程去請求圖片資源。

  2. 動態創建img標簽,設置src屬性時,即使這個img標簽沒有添加到dom元素中,也會立即發送一個請求。

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

上面的代碼如果運行起來后,就會發送請求。 如圖:

再看一個例子:創建了一個div元素,然后將存放img標簽元素的變量添加到div元素內,而div元素此時并不在dom文檔中,頁面不會展示該div元素,那么瀏覽器會發送請求嗎?

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

答案:會請求。如圖:

通過設置css屬性能否做到禁止發送圖片請求資源?

  1. img標簽設置樣式display:none或者visibility: hidden,隱藏img標簽,無法做到禁止發送請求。

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

  1. 將圖片設置為元素的背景圖片,但此元素不存在,可以做到禁止發送請求。

<!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元素時,即使設置了背景圖片,也不會發送請求,只有test元素存在時才會發送請求。

另外這個例子其實有點不太貼切,img標簽background-image二者有著本質的區別。一個屬于HTML標簽,另一個屬于css樣式,加載機制和解析順序也不同。

?

一個完整的頁面是由jshtmlcss組成的,按照解析機制,html元素會優先解析,盡管css樣式是放在head標簽內的,但也不意味著它會優先加載,它只有等到html文檔加載完成后才會執行。而img標簽屬于網頁內容,所以img標簽會隨著網頁解析渲染優先于css樣式表加載出來。

?

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


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


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

主站蜘蛛池模板: 福利姬视频在线免费观看 | 国产精品一品道加勒比 | 东京热亚洲中文一区 | 国产精品亚洲欧美—级久久精品 | 国产视频在线观看黄色 | 国产成人精品午夜福利电影 | 91福利国产在线观看网站 | 国产色视频在线观看免费 | 国产亚洲精品久久婷婷 | 国产成人午夜福利在线观看视 | 国产美女黄性色av | 国产成人精品亚洲 | av色综合久久天堂av色综合 | 国产成人精品综合网站 | 岛国一区二区三区在线观看免费 | 成人综合国语对白 | av无码a一在线观看 av无码a在线观看 | 国产精品一区二区网曝门 | 国产午夜无码精品免费看秒播 | 国产成人精品高清在线观看99 | 国产欧美日韩图片一区二区 | 国产一区二区精品 | 国产丝袜无码一区二区视频 | 国产无套视频在线观看aa在线 | 国产极品ts人妖在线观看 | 91精品观看91久久久久 | 国产成人a视频高清视频在线 | 国产午夜精品在线 | 国产高清a片在线看 | 国产日韩不卡免费精品视频 | 国产狂喷潮在线观看国产片 | 国产麻豆一区二区三 | 国产无套内射毛片 | 国产精品成人3p一区二区三区 | 国产成人无码一二三区视频 | 精品日韩国产一区二区三区 | 国产成人午夜精品免费视频 | 91精品在线播放 | 国产精品美女久久久久久久久 | 国产三级毛片 | 国产在线播放综合网房 |