2

(キャッシュマニフェストを使用して)構築しているオフライン対応のWebアプリケーションのロード画面の一部として、これまでにダウンロードされたファイルと保留中のファイルをユーザーに知らせる正確なプログレスバーを表示したいと思います。 。次のようなもの:

読み込んでいます...
/assets/images/logo.png:ロード済み
/assets/images/splashImage.png:保留中

キャッシュの「保留中」イベントを使用できることは知っていますが、イベント引数にデータが関連付けられていることはわかりません。

これを行う方法はありますか?

4

2 に答える 2

3

各ファイルのダウンロード時にトリガーされるイベントがありますがprogress、そのペイロードには、私がテストしたブラウザー(Chrome、Safari、FFベータ版)のファイル名が含まれていません。Chromeはコンソールにファイル名を表示しますが(私が知る限り、JSにアクセスできないことを知っていますが)、SafariもFFもそれほど遠くまでは行きません。そして、私が見たところ、ファイルはマニフェストにリストされているのと同じ順序でダウンロードされないため、順序付きリストを生成して一度に1つずつノックオフする方法すらありません。

ですから、あなたの質問に答えて、いいえ、今のところこれを行う方法はありません。将来、progressイベントにファイル名が含まれる可能性があります(少なくとも一部のブラウザでは)が、現時点ではこれは不可能です。

Chrome(SafariやFFではない)では、少なくともダウンロードするファイルの数を取得できるので、少なくとも正確なプログレスバーを計算できることを付け加えておきます。Chromeでこれを取得するには、次を使用します。

function downloadProgress(e) {
    totalfiles = Number(e.total);
}
window.applicationCache.addEventListener("progress", downloadProgress, false);

ただし、これは他のブラウザではエラーになるため、エラーを回避するには、try/catchまたは他のメソッド( )をラップする必要があります。typeof(e.total)

于 2011-02-25T18:47:46.817 に答える
1

これは数年遅れていますが、これを研究している他の誰かを助けるかもしれません。ファイルなどはリストされませんが、ロードされたファイルの総数に基づいて正確な(っぽい)プログレスバーが表示されます。それでも少し作業が必要かもしれません... https://github.com/joelabeyta/app-cache-percent-bar

于 2014-03-31T19:46:23.693 に答える