javascript - Opera 中的 HTML5 文件阅读器

标签 javascript html opera filereader

我正在尝试使用 Opera 12 中的文件读取器 API 来读取多个本地 ogg 音频文件,方法是将它们转换为数据 url 并将它们存储到我打算稍后访问的数组中。

    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 block ,无法弄清楚。有人可以解释为什么会发生这种情况以及可能的替代方案吗?提前致谢。

最佳答案

这适用于 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;

为什么它不起作用?

  • 首先,您尝试在 f[playliSTLength][1] 中设置一个值,因为 onload 函数在之后异步执行 播放列表长度++。它崩溃了,因为该引用不存在。
  • f 可能是错误声明的​

关于javascript - Opera 中的 HTML5 文件阅读器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11365260/

相关文章:

javascript - Node 模块中的导入功能(alphavantage)

javascript - iPhone 的 jQuery 动态背景位置

javascript - 你可以在 Web Workers 之间共享 WebAssembly 内存吗?

javascript - Facebook 分享按钮错误

css - 指针事件不影响 Firefox 和 Opera 中的滚动条

javascript - JS 中验证对象是否存在以及是否存在某个属性的最佳和最快方法是什么?

html - CSS Grid 的高度大于它的容器 div

javascript - 添加新元素后 Jquery 主题不适用

ruby-on-rails - Rails(set_no_cache 方法)无法在 Safari 和 Opera 中禁用浏览器缓存

html - CSS3 Perspective() 动画在鼠标快速移动时表现得很奇怪