6

在我的离线 webapp 缓存期间,我收到一个完全有效的错误,它显示在浏览器控制台中,如下所示:

Application Cache Error event: Manifest changed during update, scheduling retry

我可以添加一个侦听器来通知发生了错误。

window.applicationCache.addEventListener('error', function(e){
  //handle error here
}, false);

如何获取错误详细信息,在这种情况下“更新期间清单已更改,计划重试”?

4

2 回答 2

1

您必须使用 window.onerror。回调可以有三个参数:

Error message (string)
Url where error was raised (string)
Line number where error was raised (number)

检查此以获取更多信息: https ://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onerror

于 2013-09-12T14:30:15.170 回答
1

今天仍然是一个有效的问题。在我的示例中,我的错误日志不返回任何内容。我正在使用 IE11。

<html xmlns="http://www.w3.org/1999/xhtml" manifest="icozum.appcache">

onChecking 事件触发,但随后 onError 缓存状态 = 0,即未缓存。

 window.applicationCache.onchecking = function (e) {
       var doc = document.getElementById("cachestatus");
       if (doc != null) {
            doc.innerHTML += "Checking the cache.\n";
       }
 }

然后onError

window.applicationCache.onerror = function (e) {
    var doc = document.getElementById("cachestatus");
    if (doc != null) {
         doc.innerHTML += "Cache error occurred." + applicationCache.status.toString() + "\n";
         console.log(e);
         console.log("test");
     }
 }

屏幕上的输出是

检查缓存。发生缓存错误。0

onError 事件处理程序中没有关于错误的详细信息。按F12我得到了真正的错误。这是屏幕截图。有没有办法在 onError 事件处理程序中捕获这么多细节。

在此处输入图像描述

最后我发现了问题所在。该错误不是由于缺少文件。应用程序缓存文件确实存在,但是在 windows 中,visual studio (2013)/IIS 无法识别扩展名.appcache. 以下部分需要添加到web.config文件中。

<system.webServer>
  <staticContent>
    <mimeMap fileExtension=".appcache" mimeType="text/cache-manifest"/>
  </staticContent>
</system.webServer>
于 2015-08-08T03:40:34.063 回答