JS FileReader onloadend似乎导致了重定向

时间:2017-01-13 04:57:43

标签: javascript filereader http-redirect

我正在开发一个前端密集型项目,通过新的FileReader读取和解析CSV。这是一个令人讨厌的代码块,来自我所推测的Dev Tools:

 function parseCSVs() {
  let fileUpload = document.getElementById('file-input')

  if(fileUpload.files.length) {
    let fileReader = new FileReader(),
        varLabels = varAssigner.querySelectorAll('input');

    function _addUntilFull(i) {
      fileReader.readAsText(fileUpload.files[i])
      fileReader.onloadend = function() {
        addVar(varLabels[i].value, csvToMatrix(fileReader.result))

        if(varList.length == fileUpload.files.length) {
          return;
        } else {
          _addUntilFull(i + 1)
        }
      }
    }
    _addUntilFull(0)
  }

Preserved console messages

保留日志后(见上图),我发现控制台记录了所有正确的消息(导致我认为我的功能都正常工作),但文件提交和解析完成后文件将清除/重新加载,并且日志会说"导航到file:/// etc / etc",所以这个问题很可能来自FileReader或输入[type =" file&#]的意外行为34;]对象。我无法在MDN的FileReader文档或其他在线论坛中找到解释原因的原因。请帮忙!这一直很头疼-_- 谢谢!

1 个答案:

答案 0 :(得分:0)

我实际上弄清楚了问题是什么,它与上面的代码块无关......触发parseCSVs函数的按钮在一个表单中,即使我删除了“action”和“方法“窗体的属性,而按钮没有”类型“,按钮在触发onclick函数后触发重定向。我还对一个没有属性的表单和按钮进行了测试,发现了与上面相同的行为。将元素切换为a阻止了重定向并修复了​​问题:)