我正在尝试使用opera 12中的文件阅读器api读取多个本地ogg音频文件,方法是将它们转换为数据网址并将它们存储到我打算稍后访问的数组中。
function music(list)
{
var playlistlength=0;
try
{
for (var temp=0; temp < list.files.length; temp++)
{
f[playlistlength][0] = list.files.item(temp).name;
var freader = new FileReader();
freader.onload = function(frevent){
f[playlistlength][1]=frevent.target.result;
};
freader.readAsDataURL(list.files[temp]);
playlistlength++;
}
}
catch(e)
{
alert("Error");
}
}
然而,在调试器中检查时,在for循环中,没有语句被执行并且它跳转到catch块,无法弄明白。有人可以解释为什么会发生这种情况以及可能的替代方案?提前谢谢。
答案 0 :(得分:0)
这适用于jsFiddle。我是用你的代码制作的,你用的是类似的吗?
HTML:
<input type="file" id="browser"/>
Javascript:
function music(list)
{
var playlistlength=0;
var f = new Array();
try
{
for (var temp=0; temp < list.files.length; temp++)
{
var music = new Array();
music[0] = list.files.item(temp).name;
var freader = new FileReader();
freader.onload = function(frevent){
music[1]=this.result;
f.push(music);
alert(f);
};
freader.readAsDataURL(list.files[temp]);
playlistlength++;
}
alert(f);
}
catch(e)
{
alert(e);
}
}
function FileSelectHandler(e) {
var list = e.target || e.originalEvent.dataTransfer;
music(list);
}
document.getElementById("browser").onchange = FileSelectHandler;
为什么它不起作用?