我在Mac OS X上使用Chrome 12,我在文档中包含了jQuery 1.6.1。
我尝试使用以下代码读取文件,在读取文件时发生错误接缝,因此调用this.error.onerror(),但FileReader-Object this.reader不再存在而且我无法得到错误。我也不确定错误发生的原因,这是我想要阅读的常规文本文档。
function FileHandler(files, action) {
console.log('FileHandler called.');
this.files = files;
this.reader = new FileReader();
this.action = action;
this.handle = function() {
console.log('FileHandler.handle called.');
for (var i = 0; i < this.files.length; i++) {
this.reader.readAsDataURL(files[i]);
}
}
this.upload = function() {
console.log('FileHandler.upload called.');
console.log(this.reader);
data = {
content: this.reader.result
}
console.log(data);
}
this.error = function() {
console.log('An error occurred while reading a file.');
console.log(this.reader.error);
}
this.reader.onload = this.upload;
this.reader.onerror = this.error;
}
此代码创建以下控制台输出: http://cl.ly/0j1m3j0o3s071Y1K3A25
答案 0 :(得分:0)
在.onerror
内,this
与外部不同,因为它是一个新功能(带有新范围)。
通过静态设置this
来跟踪var _this = this; // _this won't change
this.reader.onerror = function() {
console.log('An error occurred while reading a file.');
console.log(_this.reader.error);
}
:
{{1}}
答案 1 :(得分:0)
这应该是正确的方法:
reader.onerror = function(event) {
console.error("File could not be read: " + event.target.error);
};