【发布时间】:2011-04-28 14:28:51
【问题描述】:
我正在使用 html5 来创建拖放图片上传功能。这在 Firefox 中对我很有用,但在 chrome 中,图像 onload 事件仅在第一次触发。如果我只在第一个作品中拖动多个图像,并且如果我在其中拖动第二个图像则失败。我相信问题在于图像加载。
这是我的代码的工作方式,我删除了不相关的部分:
var img = document.createElement("img");
var reader = new FileReader();
var canvas = document.createElement("canvas");
var canvasData;
var ctx = canvas.getContext("2d");
var myFiles;
var i = 0;
reader.onload = (function (aImg)
{
return function (e)
{
aImg.src = e.target.result;
};
})(img);
img.onload = function (){
//resizes image
//draws it to the canvas
//posts to server
i++;
if(i < myFiles.length){
processNext(i);
}
}
function processNext(filei) {
var file = myFiles[filei];
img.file = file;
reader.readAsDataURL(file);
}
i = 0;
myFiles = files;
processNext(0);
有谁知道为什么这在 Firefox 中有效,但在 chrome 中无效?
【问题讨论】:
-
您不应该在调用之前定义图像 onload 以确保在注册加载事件之前不会发生调用吗?
-
@epascarello 感谢您的回复,我忘了在其余所有代码之后添加这段代码。 img.src 在 processNextFunction 中被改变
标签: javascript html canvas onload filereader