欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

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

前端使用Image()函數(shù)加載base64圖片不兼容無onload事件解決方法

freeflydom
2023年7月4日 16:57 本文熱度 880

Image()函數(shù)將會(huì)創(chuàng)建一個(gè)新的HTMLImageElement實(shí)例。它的功能等價(jià)于 document.createElement('img')。

正常情況下,我們使用下面方法加載圖片,是能能夠獲取到onload事件的:

  1. const img = new Image();

  2. img.src = 'picture.jpg';

  3. img.onload = () => {

  4.  console.log('success');

  5. }


但是如果你需要加載的圖片是base64圖片時(shí),可能是因?yàn)闆]有請(qǐng)求發(fā)出,onload事件是無法執(zhí)行的。

幾經(jīng)嘗試,最終考慮將base64圖片轉(zhuǎn)位ObjectUrl再加載,好處是無需后端,純前端即可兼容。移動(dòng)端兼容性也非常不錯(cuò)。

具體實(shí)現(xiàn)如下:

  1. // base64轉(zhuǎn)Blob

  2. const base64ToBlob = (base64Data) => {

  3.  const arr = base64Data.split(','),

  4.    type = arr[0].match(/:(.*?);/)[1],

  5.    bstr = atob(arr[1]),

  6.    len = bstr.length,

  7.    u8Arr = new Uint8Array(l);

  8.  

  9.  while (len--) u8Arr[l] = bstr.charCodeAt(len);

  10.  

  11.  return new Blob([u8Arr], { type });

  12. }

  13.  

  14. const base64 = "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==";

  15. const imgBlob = base64ToBlob(base64)

  16.  

  17. const img = new Image();

  18. img.src = window.URL.createObjectURL(imgBlob); // blob:http://xxx

  19. img.onload = function () {

  20.  console.log('success')

  21. }


URL.createObjectURL 可能有一些兼容性問題,如果你在使用過程遇到,可以hack兼容一下

  1. function getObjectURL(blob) {

  2.  var url = null;

  3.  if (window.createObjectURL != undefined) {

  4.    url = window.createObjectURL(blob);

  5.  } else if (window.URL != undefined) {

  6.    url = window.URL.createObjectURL(blob);

  7.  } else if (window.webkitURL != undefined) {

  8.    url = window.webkitURL.createObjectURL(blob);

  9.  }

  10.  return url;

  11. }



該文章在 2023/7/4 16:58:00 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(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