麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > HTML > 正文

淺談移動端網頁圖片預加載方案

2024-08-26 00:21:08
字體:
來源:轉載
供稿:網友

由于公司業務需要,vue制作的網頁需要連接智能家居的wifi,然而這種wifi是沒有連接互聯網的,僅用于手機與家居的對接。這樣,就導致了網頁在這種wifi下無法加載服務器上的圖片。

就此,針對vue單頁面系統,我想出來3種方案。

1.在上一頁先加載圖片,緩存起來,后面的斷網頁面就能拿到了。

2.做一個頁面,上方是路由容器,放置斷網后的頁面,下方是需要顯示的全部圖片。這樣頁面加載時,圖片就全部出來了,上方的子路由自然能拿到圖片。

3.把圖片轉換成base64數據保存在localStorage。

第1、2種方案比較簡單,在pc上和安卓平臺上表現良好。然而在ios上卻不顯示。

移動端,網頁圖片,預加載

(明明圖片都在下方了,上面的卻死活不顯示)

由此推測,ios系統類瀏覽器對圖片的加載是一個蘿卜一個坑的。加載每個圖片前會先嗅探其是否在服務器上,存在且未改變就是用緩存顯示,沒找到就直接404了。因此基于瀏覽器的緩存策略在斷網的情況下并不理想。,需要使用第三種方案。先貼上代碼:

  /*  獲取圖片的base64碼        * @param {obj}img圖片dom對象         * */        function getBase64Image(img) {          let canvas = document.createElement("canvas");          canvas.width = img.width;          canvas.height = img.height;          let ctx = canvas.getContext("2d");          ctx.drawImage(img, 0, 0, img.width, img.height);  //繪制相同圖片          return canvas.toDataURL("image/png"); //轉換成base64數據        }

利用canvas可以很容易實現把圖片轉換成base64格式。之后只要保存在sessionStorage里面就可以了。之后重新顯示圖片時,只要設置img的src屬性為base64數據就可以了。我在vue項目里面的做法是,創建一個用于轉換和保存base64的組件,把slot里面的圖片全部轉換成base64,并為img標簽創建name屬性并作為sessionStorage的key;再創建一個組件作為顯示組件(只包含一個img標簽),設置其name屬性和其對應的圖片的一樣,作為key來取出sessionStorage的base64數據就ok了。

轉換和保存組件:

  <!--需要預加載的圖片-->    <save-img-base64>      <img src="../../assets/img/connect/bind_xiaofang.png" name="bind_xiaofang"/>      <img src="../../assets/img/connect/bind_allonePro.png" name="bind_allonePro"/>      <img src="../../assets/img/connect/bind_S20.png" name="bind_S20"/>      <img src="../../assets/img/connect/bind_S30.png" name="bind_S30"/>      <img src="../../assets/img/connect/connectStart_xiaofang.png" name="connectStart_xiaofang"/>      <img src="../../assets/img/connect/connectStart_allonePro.png" name="connectStart_allonePro"/>      <img src="../../assets/img/connect/connectStart_S20.png" name="connectStart_S20"/>      <img src="../../assets/img/connect/connectStart_S30.png" name="connectStart_S30"/>      <img src="../../assets/img/connect/reset_xiaofang.png" name="reset_xiaofang"/>      <img src="../../assets/img/connect/reset_allonePro.png" name="reset_allonePro"/>      <img src="../../assets/img/connect/reset_S20.png" name="reset_S20"/>      <img src="../../assets/img/connect/reset_S30.png" name="reset_S30"/>      <img src="../../assets/img/connect/network_set.png" name="network_set"/>      <img src="../../assets/img/connect/phone_wifi.png" name="phone_wifi"/>      <img src="../../assets/img/connect/tmall.png" name="tmall"/>    </save-img-base64>

顯示組件:

<img-base64 name="network_set"></img-base64>

瀏覽器sessionStorage情況:

移動端,網頁圖片,預加載

從Can I use的表格中可以看出,現代手機瀏覽器基本兼容canvas,大家可以放心使用。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高清中文字幕在线 | 久久精品一级 | 在线成人免费观看视频 | 国色天香综合网 | 看av网址| 日韩av片在线免费观看 | 毛片118极品美女写真 | 5xx免费看 | 摸逼逼视频 | 欧美综合在线观看视频 | 欧美黄色大片免费观看 | 国产一级性生活视频 | 久久精品女人天堂av | 色中色综合网 | 久久新网址| 国产一级在线看 | a一级黄色大片 | 亚洲国产精品久久久久久久久久 | 久久久一区二区精品 | 九九热九九热 | 国产成人高清在线观看 | 国产九色在线观看 | 羞羞网站在线观看入口免费 | 丰满年轻岳中文字幕一区二区 | 亚洲成人久久精品 | 18pao国产成人免费视频 | 国产色91 | 一区二区免费看 | 91美女啪啪 | 羞羞视频入口 | 中文字幕一区二区三区四区 | 深夜精品福利 | 国产99久久久国产精品 | 麻豆porn | 亚洲一区二区在线 | 亚洲国产超高清a毛毛片 | 精品麻豆cm视频在线看 | 日韩视频一区二区三区在线观看 | 曰韩黄色片 | 午夜视频啊啊啊 | 免费午夜视频在线观看 |