- 場景
做OEM定製化功能,在服務端只保存的當前圖片的靜態路徑,但是當重新部署環境時,圖片目錄會被覆蓋,此時基於產品健壯性考慮,在加載OEM定製logo等圖片時,先做下判斷,看定製數據能否正常取回。
- 解決方案
/**
* 驗證圖片後 進行熱更新
* @param {string} url 圖片路徑
* @param {string} key
* @param {boolean} img
* @private
*/
private __getImg(url?:string, key?: string, img = true) {
if (img) {
const imgObj = this.__isHasImg(url);
if (imgObj) {
const me = this;
const ImgObj = new Image();
ImgObj.onload = function() {
if (ImgObj.width > 0 && ImgObj.height > 0) me.__updateByKey(key, url);
};
// 瀏覽器兼容性處理
if (ImgObj.complete && ImgObj.width > 0 && ImgObj.height > 0) me.__updateByKey(key, url);
ImgObj.src= url;
}
} else {
this.__updateByKey(key, url);
}
}
// 關鍵代碼
const ImgObj = new Image();
ImgObj.onload = function() {
if (ImgObj.width > 0 && ImgObj.height > 0) me.__updateByKey(key, url);
};
// 瀏覽器兼容性處理
if (ImgObj.complete && ImgObj.width > 0 && ImgObj.height > 0) me.__updateByKey(key, url);
ImgObj.src= url;