确保HTML5 FileReader在.target内容自上次使用后更改时执行

时间:2014-05-20 03:21:52

标签: javascript html5

在一个网站中我使用HTML5而不是.php / forms /和客户端AJAX来检索文件 来自我的笔记本电脑的硬盘。页面在加载时有一个textarea,我在其中显示文件;但在这里我还应该注意到我有其他功能,它允许我将textarea的内容保存为新文件。那,我通过AJAX做。回到追逐:"浏览"打开Dialogue,我选择一个文件,HTML5 FileRead获取文件,一切都很好。

我可以按照自己的意愿多次执行该操作,没问题。但是,如果我然后保存一个新文件,当我接下来使用FileReader时,它会失败。我现在已经使用了大约14个小时,试图找出代码行为的原因。

如果没有代表墙,任何人都会遇到类似的问题?啊,最令人讨厌的是,Dragonfly检查员在event.target.result中显示textarea textContent 作为正确的数据,在打开之后的第一个操作中效果很好页。

编辑::

与大多数博客,问题和答案示例甚至一些规范文档不同, .textContent在我正在处理的脚本的上下文中不起作用,但是有一个改变 具体是什么数据写入AS,所有间歇性,再次关闭 FileReader行为已得到解决,并且大量测试显示其执行率为100%。

1 个答案:

答案 0 :(得分:0)

为了允许在执行文件保存之外使用FileReader,只需将 textContent 更改为 innerText

    reader.onloadend = function(evt) {
        if (evt.target.readyState == FileReader.DONE) { // note: DONE == 2
            console.log(">>>> 12 <<<< text is : "+event.target.result);
            // the textarea being edited // saved from for new files...
            // ... and used to display files read by FileReader
            document.getElementById("TextAREAx1xMAIN").textContent = event.target.result;
        }
    };  

    reader.onloadend = function(evt) {
        if (evt.target.readyState == FileReader.DONE) {
            console.log(">>>> 12 <<<< text is : "+event.target.result);
            // the textarea being edited // saved from for new files...
            // ... and used to display files read by FileReader
            document.getElementById("TextAREAx1xMAIN").innerText = event.target.result;
        }
    };