eric-utilslist
Version:
基础组件类,五星好评,商品列表,计数器
69 lines (67 loc) • 2.31 kB
JavaScript
export default class Utils{
static setCSS(css){
var styleSheet=Array.from(document.styleSheets).find(item=>item.id==="custom");
if(!styleSheet){
var style=document.createElement("style");
document.head.appendChild(style);
style.id="custom";
styleSheet=document.styleSheets[document.styleSheets.length-1];
}
css.split(/(?<=\})/g).forEach(item=>{
item=item.trim().replace(/\n/g,"");
if(item.length===0) return;
styleSheet.insertRule(item,styleSheet.cssRules.length);
});
}
static loadImage(imgArr,callback,basePath,extension){
if(basePath===undefined) basePath="";
if(extension===undefined) extension="";
if(basePath){
imgArr=imgArr.map(function(item){
basePath=basePath.endsWith("/") ? basePath : basePath+"/"
return basePath+item;
})
}
if(extension){
imgArr=imgArr.map(function(item){
if(item.endsWith(".",item.length-3) || item.endsWith(".",item.length-4))return item;
extension=extension.startsWith(".") ? extension : "."+extension;
return item+extension;
});
}
var img=new Image();
img.addEventListener("load",Utils.loadHandler);
img.addEventListener("error",Utils.errorHandler);
img.src=imgArr[0];
img.n=0;
img.imgArr=imgArr;
img.callback=callback;
img.list=[];
}
static loadHandler(e){
this.list.push(this.cloneNode(false));
Utils.loadNext(this);
}
static errorHandler(e){
console.error(this.src+"地址错误");
Utils.loadNext(this);
}
static loadNext(img){
img.n++;
if(img.n>=img.imgArr.length){
img.removeEventListener("load",Utils.loadHandler)
if(img.callback){
img.callback(img.list);
}else{
var evt=new Event("img_load_finish");
evt.list=img.list;
document.dispatchEvent(evt);
}
return;
}
img.src=img.imgArr[img.n];
}
}
// str.trim()删除字符串前后的空格
// var str=" aaa vvv adsas "
// str=str.replace(/^\s+|\s+$/g,"");