我正在开发一个前端密集型项目,通过新的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)
}
保留日志后(见上图),我发现控制台记录了所有正确的消息(导致我认为我的功能都正常工作),但文件提交和解析完成后文件将清除/重新加载,并且日志会说"导航到file:/// etc / etc",所以这个问题很可能来自FileReader或输入[type =" file&#]的意外行为34;]对象。我无法在MDN的FileReader文档或其他在线论坛中找到解释原因的原因。请帮忙!这一直很头疼-_- 谢谢!
答案 0 :(得分:0)
我实际上弄清楚了问题是什么,它与上面的代码块无关......触发parseCSVs函数的按钮在一个表单中,即使我删除了“action”和“方法“窗体的属性,而按钮没有”类型“,按钮在触发onclick函数后触发重定向。我还对一个没有属性的表单和按钮进行了测试,发现了与上面相同的行为。将元素切换为a阻止了重定向并修复了问题:)