(file_reader.html)
<form> <label for="file">file</label> <input id="file" type="file" /> </form> <hr /> <pre id="result"></pre> <script src="file_reader.js"></script>
(file_reader.js)
window.addEventListener('DOMContentLoaded', function () { document.getElementById('file').addEventListener('change', function (e) { var input = document.getElementById('file').files[0]; var reader = new FileReader(); console.log('bbb'); reader.addEventListener('load', function () { console.log('aaa'); document.getElementById('result').textContent = reader.result;・・・① }, true); reader.readAsText(input, 'UTF-8');・・・② }, true); });
上記のプログラムなのですが、ブラウザ上で読み込んだファイルのテキストが正常に表示されます。
しかし、②のreadAsTextの処理が終わるまではresultプロパティの中身はは空ではないのでしょうか?
②の`reader.readAsText(input, 'UTF-8')を①よりも前に書かないと、textContentに空文字列が代入されたままになってしまうのでは?と思ったのですが、上記の書き方でも②の処理が終わった後にtextContentの中身がアップロードしたファイルのテキストの内容に書き変わるのはどうしてでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/12/07 22:19 編集
2019/12/07 22:25
2019/12/07 22:34
2019/12/07 22:37
退会済みユーザー
2019/12/07 22:54
2019/12/07 23:28