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