3

我正在使用 Google chrome 浏览器,并在控制台中运行以下代码,这似乎可以正常工作,但是当我在脚本中运行它时却没有

reader = new FileReader();
reader.readAsDataURL($("input[name='image']")[0].files[0]);
alert(reader.result)
somevarname=reader.result

控制台将结果显示为数据 url,但在脚本中,javascript 不会将结果分配给变量,并且 alert 是一个空白字符串。我究竟做错了什么?

4

1 回答 1

7

FileReader 是异步的,所以在脚本中结果是在之后设置的

alert(reader.result)
somevarname=reader.result

被执行。您必须使用onloadFileReader 的属性来获得结果。
例子:

var reader = new FileReader();
//This function will execute when the reader is done
reader.onload = function(){alert(this.result);};
reader.readAsDataURL($("input[name='image']")[0].files[0]);

如需优秀的 HTML5 文件 API 教程,请访问HTML5 Rocks

于 2011-07-23T02:15:08.203 回答