为什么此代码不通知文本文件中的文本?(javascript/html)
这是我的密码。问题是信息没有被提醒。它在Js Fiddle中工作,但在chrome/firefox/safari上不起作用。当我尝试使用document.write在JSFIDLE中显示文本时,它也不起作用。这个代码给了我很多问题为什么此代码不通知文本文件中的文本?(javascript/html),javascript,file,file-io,Javascript,File,File Io,这是我的密码。问题是信息没有被提醒。它在Js Fiddle中工作,但在chrome/firefox/safari上不起作用。当我尝试使用document.write在JSFIDLE中显示文本时,它也不起作用。这个代码给了我很多问题 <html> <head> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type=
<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
function readMultipleFiles(evt) {
//Retrieve all the files from the FileList object
var files = evt.target.files;
if (files) {
var r = new FileReader();
for (var i = 0, f; f = files[i]; i++) {
r.onload = (function(f) {
return function(e) {
var contents = e.target.result;
alert(contents);
};
})(f);
r.readAsText(f);;
}
} else {
alert("Failed to load files");
}
}
document.getElementById('fileinput').addEventListener('change', readMultipleFiles, false);
</script>
</head>
<body>
<input type="file" id="fileinput"/>
</body>
</html>
函数读取多文件(evt){
//从FileList对象检索所有文件
var files=evt.target.files;
如果(文件){
var r=新文件读取器();
for(var i=0,f;f=files[i];i++){
r、 onload=(函数(f){
返回函数(e){
var内容=e.target.result;
警报(内容);
};
})(f) );
r、 readAsText(f);;
}
}否则{
警报(“加载文件失败”);
}
}
document.getElementById('fileinput')。addEventListener('change',readMultipleFiles,false);
试试看
而不仅仅是
document.getElementById('fileinput').addEventListener('change', readMultipleFiles, false);
编辑:所以是的,解决方案是
使用
chrome.exe执行chrome——对windows禁用web安全性
,或google chrome——对linux禁用web安全性
。您正在将事件分配给一个尚不存在的元素。您可以将代码移动到页面底部,或者使用DOMready事件(我不知道Google的API可能会公开一个)编辑:忽略此项。这可能是重复的问题r.readAsText(f)代码>这并没有解决它。如果这就是问题所在,有没有办法绕过chrome的安全性?或者按照Pekka所说的,移动整个
块,并将其粘贴到
元素后。这两种方法似乎都不起作用。Chrome有奇怪的安全设置,但是如果它在JSFIDLE中工作,它不应该在Chrome中工作。JSFIDLE运行您在窗口的Javascript部分中编写的代码。默认情况下,onload
。
document.getElementById('fileinput').addEventListener('change', readMultipleFiles, false);