1

こんにちは、javascript でファイル API を使用して最初のプロジェクトを作成しています。これは、ファイルを入力として受け取り、その内部コードを Div に表示する単純なプログラムです。イベント リスナーとイベント ハンドラーなしでこのコードを機能させる方法があるかどうかを知りたいです。これが主な問題だと思いますが、それがどのように機能するかわかりません:

document.getElementById('byte_content').textContent = reader.readAsBinaryString(blob);

すべての mi コードは次のとおりです。

<!DOCTYPE html>
<head>
<html>
<script>
function convert(){
var files = document.getElementById('input').files;
file = files[0];
var reader = new FileReader();
var blob = file.slice(0,20);
    document.getElementById('byte_content').textContent = reader.readAsBinaryString(blob);
}
</script>
</head>
<body>

<input type="file" id="input" name="file" />

<button onclick=convert()>Run script</button>

<div id="byte_range"></div>

</body>

このような例をいくつか見てきましたが、それらはすべて次のようなコードを使用しています。

 event.target.result
4

1 に答える 1

1

それはいけません。FileReader はファイルを非同期的に読み取ります。つまり、読み取りはバックグラウンドで行われ、将来の特定されていない時点で終了します。すぐに結果を返すわけではありません。結果を取得する唯一の方法は、終了時にイベントをリッスンし、実行したいコードを実行することです。これはまったく問題ではありません。呼び出し後に手続き的にではなく、コールバック/イベント ハンドラー関数にコードを配置する必要があるだけですreadAsBinaryString

それ以外の:

document.getElementById('byte_content').textContent = reader.readAsBinaryString(blob);

あなたがやる:

reader.onload = function (event) {
    document.getElementById('byte_content').textContent = event.target.result;
};
reader.readAsBinaryString(blob);

それだけです。

于 2013-05-31T07:55:26.897 に答える