3

Chrome では、applicationCache イベントのキャッチは機能しますが (以下を参照)、FireFox 17 では機能しません (情報から、appCache がいっぱいになるのを許可した後、1.7MB あることがわかります)。動作していますが、イベントが発生しません。なんで?(このコードは、ロードされる最初の .JS ファイルにあります)。

function onUpdateReady() {
    window.applicationCache.swapCache();
    if (confirm('A new version of this site is available. Load it?')) {
        window.location.reload();
    }
}
window.applicationCache.addEventListener('updateready', onUpdateReady);
if (window.applicationCache.status === window.applicationCache.UPDATEREADY) {
    onUpdateReady();
}

ところで、FireBug には、Chrome ツールで持っている appCache や IndexDB に関するきちんとしたリソース タブ情報があればいいのにと思います。

4

1 に答える 1

1

As far as I found out, the event DOES get fired, but you get an error when you call swapCache, and this prevents finishing the code block. you can get around this bug by using try-catch

 window.applicationCache.addEventListener('updateready', function() {
  try {window.applicationCache.swapCache();}
  catch(error) {
    console.log(error.code);
  }
  if (confirm('A new version of this site is available. Load it?')) {
    window.location.reload();
  }
}, false);

then everything will work as expected.

于 2013-10-28T21:39:17.340 に答える