Angularjs appcache,如何检测清单文件的更改

Angularjs appcache,如何检测清单文件的更改,angularjs,Angularjs,我目前正在Google Chrome上开发应用程序缓存。 所以我创建了一个进度条来通知用户进度 但是当清单文件更改时,我想通知用户新版本可用 在网上查找后,我尝试了以下代码: window.addEventListener('load', function(e) { if (window.applicationCache) { window.applicationCache.addEventListener('updateready', function(e) { if (window.ap

我目前正在Google Chrome上开发应用程序缓存。 所以我创建了一个进度条来通知用户进度

但是当清单文件更改时,我想通知用户新版本可用

在网上查找后,我尝试了以下代码:

window.addEventListener('load', function(e) {
if (window.applicationCache) {
window.applicationCache.addEventListener('updateready', function(e) {
  if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
      // Browser downloaded a new app cache.
      // Swap it in and reload the page to get the new hotness.
      window.applicationCache.swapCache();
      if (confirm('A new version of this App is available. Load it now?')) {
            window.location.reload();
      }
    } else {
      // no manifest change..
    }
}, false);

// if there is no update, display a message
window.applicationCache.addEventListener('noupdate', function(e) {

  alert('App is up to date. ');

}, false);
但是下载事件总是在updateReady之前调用。这意味着,所有文件都已下载,在此之后,我收到警报(“此应用程序的新版本可用…”)

我希望有消息“新版本可用”,当用户单击“是”时,必须调用下载事件

少了什么

我的原始代码和进度条:

        var appCache = window.applicationCache;
        appCache.addEventListener('downloading', function (e) {
            showProgressBar();
        }, false);

        appCache.addEventListener('progress', function (e) {
            updateProgressBar(e.loaded, e.total);
        }, false);

        appCache.addEventListener('cached', function (e) {
            cacheSucceed();
        }, false);

        appCache.addEventListener('updateready', function (e) {
            cacheSucceed();
            appCache.swapCache();
        }, false);

        appCache.addEventListener('noupdate', function (e) {
            //cacheSucceed();
        }, false);

        appCache.addEventListener('error', function (e) {
            cacheFailed();
        }, false);

        function showProgressBar() {

            var bodyElement = angular.element("body");

            var progressBarElement = "<div id='progress-bar'><p style='color:white'>New version. Application cache in progress...<span id='progressMessage'>0%</span></p><progress id='progressBar' value='5' min='0' max='100'>0%</progress></div>";
            bodyElement.prepend(progressBarElement);

            var progressBarElement = angular.element("#progress-bar");
            progressBarElement.fadeIn("slow");
        }

        function hideProgressBar(message) {

            var appcacheStatusElement = angular.element("#appcacheStatus");
            appcacheStatusElement.text(message);

            var progressBarElement = angular.element("#progress-bar");
            progressBarElement.addClass('hidden');

        }

        function updateProgressBar(loaded, total) {
            var pourcentage = Math.round(loaded / total * 100);
            var progressBarElement = angular.element("#progressBar");
            var progressMessageElement = angular.element("#progressMessage");

            progressBarElement.attr("value", pourcentage);
            progressMessageElement.text(pourcentage + " %");

        }

        function cacheFailed() {
            hideProgressBar("error during app cache");
        }

        function cacheSucceed() {
            hideProgressBar("application is cached");
        }
var-appCache=window.applicationCache;
appCache.addEventListener('downloading',函数(e){
showProgressBar();
},假);
appCache.addEventListener('progress',函数(e){
updateProgressBar(e.loaded,e.total);
},假);
appCache.addEventListener('cached',函数(e){
cachesuccess();
},假);
appCache.addEventListener('updateready',函数(e){
cachesuccess();
appCache.swapCache();
},假);
appCache.addEventListener('noupdate',函数(e){
//cachesuccess();
},假);
appCache.addEventListener('error',函数(e){
cacheFailed();
},假);
函数showProgressBar(){
var bodyElement=角度元素(“主体”);
var progressBarElement=“

新版本。正在进行应用程序缓存…0%

0%”; bodyElement.prepend(progressBarElement); var progressBarElement=angular.element(“进度条”); progressBarElement.fadeIn(“慢”); } 函数hideProgressBar(消息){ var appcacheStatusElement=angular.element(“appcacheStatus”); appcacheStatusElement.text(消息); var progressBarElement=angular.element(“进度条”); progressBarElement.addClass(“隐藏”); } 函数updateProgressBar(已加载,总计){ var pourcentage=数学圆(加载/总计*100); var progressBarElement=angular.element(“#progressBar”); var progressMessageElement=angular.element(“#progressMessage”); progressBarElement.attr(“值”,pourcentage); progressMessageElement.text(pourcentage+“%”); } 函数cacheFailed(){ hideProgressBar(“应用缓存期间出错”); } 函数cacheSucceed(){ hideProgressBar(“应用程序已缓存”); }
谢谢