【问题标题】:JS FileReader onloadend seems to be causing redirectJS FileReader onloadend 似乎导致重定向
【发布时间】:2017-05-28 09:56:58
【问题描述】:

我正在开发一个前端密集型项目,该项目通过新的 FileReader 读取和解析 CSV。这是有问题的代码块,根据我的推测,感谢开发工具:

 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 或 input[type="file"] 对象的意外行为。我在 MDN 的 FileReader 文档或其他在线论坛中找不到任何可以解释为什么会发生这种情况的内容。请帮忙!这真是令人头疼-_- 谢谢!

【问题讨论】:

    标签: javascript filereader http-redirect


    【解决方案1】:

    其实我已经弄清楚问题出在哪里了,和上面的代码块没有任何关系……触发 parseCSVs 函数的按钮在一个表单里面,即使我已经删除了“action”和“方法”属性,并且按钮没有“类型”,按钮在 onclick 函数触发后触发重定向。我还在一个简单的 HTML 文件中对没有属性的表单和按钮进行了测试,并发现了与上述相同的行为。将元素切换为防止重定向并解决了问题:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-20
      • 2023-04-02
      • 2016-10-09
      • 2016-07-16
      • 2016-08-10
      相关资源
      最近更新 更多