2

我有一个运行良好的 HTML5 离线应用程序,缓存验证,并且它通常工作,直到我真正强制设备(或计算机)离线。

我有一个附加的处理程序,window.applicationCache.onerror因此我可以处理并提示可能发生的任何随机错误:

window.applicationCache.onerror = function (e) {
    console.log(JSON.stringify(e));
    model.errorInfo(JSON.stringify(e));
    model.cacheError(true);
};

然而,这个错误处理程序也会在设备离线时触发,这会抛出错误对话框,而实际上它不应该。

这吐出的 JSON 如下:

{"cancelBubble":false,"returnValue":true,
 "srcElement":{"onobsolete":null,"status":1},"defaultPrevented":false,
 "timeStamp":1351875347729,"cancelable":false,"bubbles":false,
 "eventPhase":2,"currentTarget":{"onobsolete":null,"status":1},
 "target":{"onobsolete":null,"status":1},"type":"error"}

对于我可以寻找什么来处理这种特殊情况,我在这里看不到任何明显的东西。我应该忽略基于此处某些内容的错误,还是完全做其他事情?

4

1 回答 1

1

...这个错误处理程序也会在设备离线时触发,这会抛出错误对话框,而实际上它不应该。

这实际上是适合这种情况的事件,因为applicationCache无法获取清单并因此对可能更新的清单进行操作。为这种情况举办另一场活动会很好,但现在还没有。

如果您想向用户显示有关缓存状态的有用信息:applicationCache.status每次触发事件时检查以查看更新先前缓存的应用程序 ( ) 或初始缓存 ( )error是否存在错误。applicationCache.status===1applicationCache.status===0

于 2012-11-03T07:15:21.903 回答