Кэш автономного приложения HTML, список загруженных файлов - PullRequest
2 голосов
/ 25 февраля 2011

Как часть экрана загрузки для веб-приложения с поддержкой автономного режима, которое я создаю ( с использованием манифеста кэша ), я хотел бы отобразить точный индикатор выполнения, который позволяет пользователям знать, какие файлы имеют до сих пор были загружены и которые все еще ожидают. Примерно так:

Loading...
/assets/images/logo.png: loaded
/assets/images/splashImage.png: pending

Я знаю, что могу использовать событие «ожидание» кэша, но не вижу, чтобы с аргументами события были связаны какие-либо данные.

Есть ли способ сделать это?

Ответы [ 2 ]

3 голосов
/ 25 февраля 2011

Существует событие progress, которое запускается при загрузке каждого файла, однако его полезная нагрузка не включает имя файла в любом браузере, с которым я тестировал (Chrome, Safari, FF beta). Chrome отображает имя файла в консоли (хотя, насколько я знаю, оно недоступно для JS), но ни Safari, ни FF даже не заходят так далеко. И из того, что я видел, файлы загружаются не в том порядке, в котором они перечислены в манифесте, поэтому даже нет способа создать упорядоченный список, а затем выбрасывать их по одному за раз.

Так что в ответ на ваш вопрос, нет, сейчас нет никакого способа сделать это. Возможно, что в будущем событие progress будет включать имя файла - по крайней мере, в некоторых браузерах - но сейчас это невозможно.

Я должен добавить, что в Chrome (не в Safari или FF) вы можете по крайней мере получить количество загружаемых файлов, что позволит вам по крайней мере рассчитать точный индикатор выполнения. Чтобы получить это в Chrome, вы должны использовать следующее:

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

Однако это приведет к ошибке в других браузерах, поэтому вам нужно обернуть try/catch или другой метод (typeof(e.total)), чтобы избежать ошибки.

1 голос
/ 31 марта 2014

Это на несколько лет позже, но, возможно, это поможет кому-то еще, кто исследует это.Он не перечисляет файлы или что-то еще, но показывает точный (ish) индикатор выполнения, основанный на общем количестве загруженных файлов.Возможно, еще нужно немного поработать ... https://github.com/joelabeyta/app-cache-percent-bar

...