【问题标题】:reading text files in html5 + javascript, result is browser dependant在 html5 + javascript 中读取文本文件,结果取决于浏览器
【发布时间】:2012-10-11 14:08:51
【问题描述】:

我已经研究了好几个小时了,浏览了网络上的不同选项,试图理解——而不仅仅是复制——如何加载文本文件。我无法使用我找到的任何示例,也就是说,直到我从 chromium 更改为 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(开发人员内部版本 134367 Linux)Ubuntu 11.10

【问题讨论】:

  • 在 Chrome 22 和 Chromium 15 中为我工作,无论我需要什么(前者为简单的 todo 文本文件,后者为 JSON)。 (jsfiddle.net/EYrdE)。您是否尝试过不同的文本文件?也许你在翻译中丢失了一些东西。你检查过控制台是否有错误?

标签: html file chromium


【解决方案1】:

会是这样吗?

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

您的第二部分不应该是有条件的吗?像 i

【讨论】:

  • 我是 javascript 新手,所以保留原来的代码。将该行更改为code for (var i = 0; i &lt; files.length; i++) { 并在定义var f = files[i]; 之后,这对我来说更有意义。不过,在 firefox 上运行良好,而不是在 chromium 上运行良好......我想这与我的盒子有关,而不是基于网络的?
  • 也许是这样——就像 net.uk.sweet 说的那样——你在控制台中看到了什么吗?
  • 控制台为空。铬开发人员的工具没有给出错误。我正在经历一些与使用 --allow-file-access-from-files 相关的事情,以防您尝试读取本地文件。显然,在某些版本的铬中,这是一个问题。但一直未能找到对问题的合理回应。
【解决方案2】:

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

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

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

因为这个,我只浪费了大约四个小时......

【讨论】:

  • 所以你是通过 file:// url 运行它的?
  • 好吧,我通常通过 localhost Web 服务器运行东西,只是因为我在您自己遇到过基于文件的 url 的问题。
猜你喜欢
  • 2011-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多