0

そのため、HTML5 FileSystem API を使用して大量のデータをファイルに書き込みます。HTML ページがアンロードされたとき、つまりユーザーが別の場所に移動したときに、このデータを書き込みたいと考えています。

http://www.html5rocks.com/en/tutorials/file/filesystem/

機能していません。機能させる方法がないのではないかと心配しています。ファイルシステムへの参照が既にある場合でも、少なくとも 2 つのコールバックを待つ必要があります。1 つは getFile を呼び出した後、fileEntry を渡します。次に createWriter を呼び出した後、fileWriter を渡します。成功/失敗のコールバックについて言及します。ユーザーが離れているため、コールバックが呼び出されていないと思います。

これを回避する方法はありますか?ダイアログによって導入された遅延が書き込みの時間を与えるかどうかを確認するために、ナビゲートするための確認メッセージで onbeforeunload を使用しようとしましたが、これは機能しません (おそらく Javascript がシングルスレッドであるためですか?) 今、私は疑問に思っています彼らがページから離れたときを期待して、彼らがページにいる間ずっと開いているfileWriterを保持できるとしたら?どんな助けでも大歓迎です。

4

2 に答える 2

1

onunload一部のブラウザーでは、 /で実行できること (または実行できる作業の量) に制限がありますonbeforeunload。たとえばonunload、Chrome で完了するには 1 秒のタイムアウトがあります。キューに入れられた非同期タスクはonunload、終了後に実行されることが保証されていません。

(ページがアンロードされると、ブラウザーはスクリプト実行コンテキストの割り当てを解除するため、ページがなくなる前にポストされなかった連鎖コールバックの一部は実行されません。)

あなたがやっているように fileEntry/fileWriter をキャッシュしようとすることをお勧めしますが、特に大量のデータを書き込んでいる場合は何も保証されません。

于 2012-09-21T01:34:37.400 に答える
0

私はこれを働かせました

  1. ファイルを開き、ページの読み込み時にライターを取得します (したがって、私はすべてを行います: クォータを要求し、ファイルシステム、ファイルエントリ、およびファイルライターを取得し、ユーザーがページにいる間にファイルライターを保持します

  2. 「onbeforeunload」イベントでのファイルへの書き込み

  3. 「onbeforeunload」から文字列を返すため、ページから移動したときに確認メッセージが表示されます。面倒ですが、ファイルの書き込みを完了する時間を与えるために確認メッセージが必要です。そうしないと、書き込みは行われません。

より良い解決策のためにまだ開いていますが、確認メッセージが表示されないのはいいことです.

于 2012-09-13T11:17:51.880 に答える