在html5 + javascript中读取文本文件,结果取决于浏览器

时间:2012-10-11 14:08:51

标签: html5 file chromium

我现在已经花了好几个小时,在网上试图理解 - 而不仅仅是复制 - 如何加载文本文件。我找不到任何我发现的例子,也就是说,直到我从chrome改为firefox。例如,stackoverflow中的代码问题:HTML5 File api, reading in an xml/text file and displaying it on the page?,为简单起见,我在这里写道:

<!DOCTYPE html> 
<html> 
<head> 
<title>reading xml</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
</head>
<body>
<input type="file" id="files" name="files[]" multiple />
<output id="list"></output>

<script>
  function handleFileSelect(evt) {
    var files = evt.target.files; // FileList object

    // Loop through the FileList
    for (var i = 0, f; f = files[i]; i++) {

      var reader = new FileReader();

      // Closure to capture the file information.
      reader.onload = (function(theFile) {
        return function(e) {
          // Print the contents of the file
          var span = document.createElement('span');                    
          span.innerHTML = ['<p>',e.target.result,'</p>'].join('');
          document.getElementById('list').insertBefore(span, null);
        };
      })(f);

      // Read in the file
      reader.readAsText(f);
      // reader.readAsDataURL(f);
    }
  }

  document.getElementById('files').addEventListener('change', handleFileSelect, false);
  </script>
</body>

在firefox上运行得很好。我无法让它在铬中发挥作用。我错过了什么?!感谢。

我使用的是Chromium 18.0.1025.168(Developer Build 134367 Linux)Ubuntu 11.10

2 个答案:

答案 0 :(得分:0)

可能是这个吗?

for (var i = 0, f; f = files[i]; i++) {

你的第二部分不应该是有条件的。像我这样的东西files.length?

答案 1 :(得分:0)

出于安全考虑,要加载本地文件,我必须使用以下命令从命令行调用chromium。

    chromium-browser --allow-file-access-from-files

注意:您必须关闭所有铬窗才能使其生效。

因此而失去了大约四个小时......