我制作了一个 js 脚本来将图像(数量超过 300 个)转换为 base-64。
<script type="text/javascript">
var onderdelen, afbeeldingen;
var c=document.getElementById("myCanvas");
var container = $("#container ul");
var lengte = container.length;
var speed = 1000;
dataStart = "{\"onderdelen\":[";
dataEnd = "]}";
convertToBase64 = function(convertImg){
if(null == convertImg){
return "";
}else{
c.width = convertImg.width;
c.height = convertImg.height;
ctx=c.getContext("2d");
ctx.drawImage(convertImg,0,0);
dataURL = c.toDataURL("image/jpg").replace("data:image/png;base64,","");
return(dataURL);
}
};
$("#output").append(dataStart);
container.each(function(index,value){
setTimeout( function() {
var deze = $(value)
$("#output").append("{\"nr\" : \""+deze.attr("id")+"\", \"naam\" : \""+deze.attr("naam")+"\", \"cat\" : \""+deze.attr("cat")+"\"},");
kinderen = deze.find("li");
kinderen.each(function(i,v){
naam = $(this).parent().attr("id")+"_"+$(this).attr("class");
setTimeout(function(){
var img = $(v).find("img").get(0)
$("#output").append("{\"naam\": \""+ naam + "\", \"data\" : \"" + convertToBase64(img) + "\"},");
},i*speed);
$(this).hide();
});
console.log(index);
}, index*speed*5);
//if(index==100){return false;}
});
</script>
当我运行时,排序在 37(索引)处关闭,如果我等待足够长的时间,它将完成。谁能告诉我如何使它运行更顺畅?
是否有一些我超载的javascript函数,是否有一种我不知道的cashe形式,我是否过度使用setTimeout函数,我是否过度使用dom,我的文件是否很大。有任何想法吗。