Javascript文件读取器onload未启动

Javascript文件读取器onload未启动,javascript,html,Javascript,Html,我已经有一段时间没有使用JavaScript了,我似乎无法读取文本文件并显示内容 我尝试了onload以及onload。如果我只是把reader.onload=alert('Hello')警报触发,但我无法获取任何与该函数相关的内容 不太清楚从这里到哪里去。我已经尝试在reader.onload=function(evt)…之后定义函数,但这不起作用 我在Safari 6.0.5和Chrome中也尝试过 <!DOCTYPE HTML>

我已经有一段时间没有使用JavaScript了,我似乎无法读取文本文件并显示内容

我尝试了
onload
以及
onload
。如果我只是把
reader.onload=alert('Hello')警报触发,但我无法获取任何与该函数相关的内容

不太清楚从这里到哪里去。我已经尝试在
reader.onload=function(evt)…
之后定义函数,但这不起作用

我在Safari 6.0.5和Chrome中也尝试过

<!DOCTYPE HTML>                                                                    
<html>                                                                             
<head>                                                                         
    <title>Pi to Colors</title>                                                
</head>                                                                        
<body>                                                                         
<script>                                                                       
function readFile() {                                                       
    var reader = new FileReader();                                             
    reader.onload = readSuccess;                                            
    function readSuccess(evt) {                                             
        var field = document.getElementById('main');                        
        field.innerHTML = evt.target.result;                                
    };                                                                      
    reader.readAsText("/pi.txt");                                              
}                                                                           
</script>                                                                      
<div id="main">                                                                

</div>                                                                         
</body>                                                                        
</html> 

圆周率与颜色
函数readFile(){
var reader=new FileReader();
reader.onload=readSuccess;
函数readSuccess(evt){
var字段=document.getElementById('main');
field.innerHTML=evt.target.result;
};                                                                      
reader.readAsText(“/pi.txt”);
}                                                                           

出于安全原因,您无法获取这样的本地文件

另一个潜在问题是readAsText(以及所有读取函数)需要文件的内容,而不是文件的路径/名称。您可以从input type=“file”元素的files集合中获取它。下面是代码的工作方式:

function readFile(file) {                                                       
    var reader = new FileReader();
    reader.onload = readSuccess;                                            
    function readSuccess(evt) { 
        var field = document.getElementById('main');                        
        field.innerHTML = evt.target.result;                                
    };
    reader.readAsText(file);                                              
} 

document.getElementById('selectedFile').onchange = function(e) {
    readFile(e.srcElement.files[0]);
};
以下是JSFIDLE:


注意:此代码在safari浏览器中不起作用

您可以使用ajax获取文件内容:

var reader= new XMLHttpRequest();
reader.open('GET', '/pi.txt');
reader.onreadystatechange =readSuccess();
function readSuccess(evt) {                                             
   var field = document.getElementById('main');                        
   field.innerHTML = reader.responseText;                                
};
reader.send();

对我来说什么都不管用。下面你可以找到我丑陋的解决方案,但这是唯一一个成功的解决方案。在我的例子中,用户最多可以上传3个文件,因此var iPDF可以是0,1,2

var iPDF=已更新的现有文件数;
if(iPDF};我有同样的问题,我找到了解决方案。除非用户具有权限,否则无法读取本地文件。您可以在页面上放置
。当文件输入更改时,您可以读取数据。

那么您是在浏览器中运行此代码?试图从系统中读取本地文件?我很确定浏览器会阻止你这么做。你的浏览器控制台告诉你什么?错误控制台什么也没说。不在Safari中。“reader.onload=readSuccess;”“readSuccess”不应该是“readSuccess()”?不,它将指定“undefined”,这是函数的返回值。演示了我的问题,您不能使用
addEventListener('onload',readSuccess)
,尽管有:“注意:由于FileReader继承自EventTarget,因此也可以使用addEventListener方法侦听所有这些事件。”