我在函数内部使用了FileReader。它不会加载,并且在初始化时只有空值。有人可以帮忙吗? 当我尝试在main函数之外调用EventListener和uploadFile函数时,代码起作用。在下面的代码中,仅Filereader不会加载。
var main = (function() {
var canvases;
var ctxs;
//...
function initMain() {
//...
$s('#file-input').addEventListener('change', function() {
uploadFile(this.files);
});
//...
canvases = [], ctxs = [];
}
//...
function uploadFile(files) {
if ( files && files[0] ) {
canvases[0] = $s('#canvas0');
ctxs[0] = canvases[0].getContext('2d');
var freader = new FileReader();
freader.onload = function(e) {
var img = new Image();
img.addEventListener('load', function() {
ctxs[0].drawImage(img, 0, 0);
});
img.src = e.target.result;
};
freader.readAsDataURL( files[0] );
}
}
//...
function $s(id) {
if (id.charAt(0) !== '#') return false;
return document.getElementById(id.substring(1));
}
return {
init: initMain
};
})();
window.addEventListener('load', main.init);