我使用以下代码上传文件:
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.open("POST", requestUrl, true);
xhr.send(f);
请注意,我附加了一个监听器来上传进度:
function uploadProgress(evt)
{
// Which upload was it?
}
问题是,如果我同时发生多次上传,并且他们正在共享相同的事件处理程序,我该如何确定哪个上传触发了该事件?
答案 0 :(得分:1)
尝试将其包装为控件?
var uploadProgress = function(uploadObj, event) {
// Do somthing about uploadObj
}
// Target maybe object or string, whatever you want
var Uploader = function(target) {
var xhr = new XMLHttpRequest();
var handler = uploadProgress.bind(this, target);
xhr.upload.addEventListener("progress", handler, false);
xhr.open("POST", target, true);
xhr.send(f);
}
.bind将返回一个新函数,当执行新函数时,它会' ll:
this
,将上传器作为其上下文。target
作为第一个参数,因此progess事件给出的evt将传递给uploadProgress中的第二个参数。