我正在编写一个脱机Web应用程序。我有一个清单文件供我的applicationCache使用。我有appCache事件的处理程序。我想检测正在下载的文件是第一次下载还是正在更新。因为如果要更新它们,我想阻止我的应用程序代码运行,因为我将在更新我的应用程序后刷新浏览器。我这里的特定问题是,当触发“检查”事件时,applicationCache状态已经为“下载中”,有谁知道在下载任何清单或文件之前如何获取applicationCache.status?预先感谢您的任何回答window.applicationCache.addEventListener('checking', function (event) { console.log("Checking for updates."); console.log("inside checking event, appcache status : %s", applicationCache.status);}, false);window.applicationCache.addEventListener('updateready', function (e) { if (window.applicationCache.status == window.applicationCache.UPDATEREADY) { // Browser downloaded a new version of manifest files window.location.reload(); }}, false);window.applicationCache.addEventListener('downloading', function (event) { appCommon.information("New version available", "Updating application files...", null, null);}, false);window.applicationCache.addEventListener('progress', function (event) { $("#informationModal").find(".modal-body").html("Updating application files... " + event.loaded.toString() + " of " + event.total.toString());}, false);window.applicationCache.addEventListener('cached', function (event) { $("#informationModal").find(".modal-body").html("Application up to date."); setTimeout(function () { $("#informationModal").find(".close").click(); }, 1000);}, false); 最佳答案 根据specification,checking事件始终是第一个事件。  用户代理正在检查更新,或者是第一次尝试下载清单。这始终是序列中的第一个事件。我认为刷新浏览器是错误的,因为那样将不会自动获取新副本。如果查看使用applicationCache的MDN guide,您将看到始终总是从applicationCache加载文件,然后继续进行尝试避免刷新的事件循环。无需刷新,您只需简单地使用applicationCache事件生命周期即可初始化和启动您的应用程序。  我想阻止我的应用程序代码运行,因为我将在更新我的应用程序后刷新浏览器。您可以控制应用程序何时开始运行,如果您确实要刷新浏览器,只需始终在updateready或noupdate事件之后启动应用程序,但实际上似乎无需刷新,而是应该使用代替。我发现此window.applicationCache.swapCache有用。关于javascript - 如果正在更新应用程序缓存,则阻止ajax调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26241217/
10-08 21:11