FileReader API を使用してローカル ファイルを読み取り、それらを Java アプレットにフィードしてきましたが、これは今のところ機能しています。ファイルが読み込まれ、アプレットは想定どおりに動作します。ファイルの内容を (文字列として) アプレットに渡す関数は、現在、Reader の onloadend() イベントに割り当てられた関数の内側で呼び出されています (エラー処理の必要性のために、onload() ではなく onloadend() を代わりに使用します。それを try/catch 命令に置き換えることができるかもしれませんが、調べてみます)。ここで、ファイルの内容をグローバル変数に渡し、Javascript でも解析できるようにします。問題は、次の理由により、これが不可能に見えることです。
1) ファイルがロードされた後の FileReader オブジェクトの .result メンバーは空です (リーダー自体が非同期であることを考えると、これは理にかなっています)。
2) .result メンバーをグローバル変数にコピーすると、たとえば次のようになります。
var my_string;
function load_callback()
{
//Do some stuff...
my_string = this.result;
}
...
my_reader = new FileReader();
my_reader.onloadend = load_callback;
my_reader.readAsText(my_file)
document.getElementById("empty_paragraph").innerHTML = my_string;
その結果、私は大きな利益を得ることができますundefined
(そして、これはあまり意味がありません)。私は何をすべきか?これは、FileReader がそのコールバック メソッドの外部にファイルの内容を伝達することを不可能にする、他のセキュリティ機能ですか? 誰かがそれについて言及する前に - はい、ファイルはユーザーによって適切に送信されました (私が言ったように、ページの残りの部分は機能します)。はい、名前my_string
が重複していないことを確認しました。Chromium と Firefox の両方でこれをテストしたので、ブラウザに依存しません。誰かが私を助けることができますか?