我从事HTML5中与应用程序缓存相关的工作。我在body onload中添加了addCacheListeners()。这在移动safari和chrome上运行良好,但在android浏览器上则不行。当涉及到android浏览器时,会触发错误事件。

function addCacheListeners(){
        var appCache=window.applicationCache;
        if(appCache!== 'undefined'){
            alert("defined");
            appCache.addEventListener('checking', function(e){
                                      }, false);
            appCache.addEventListener('progress', function(e){
                                      }, false);
            appCache.addEventListener('updateready', function(e) {
                                        alert("update is ready");
                                      if (appCache.status == appCache.UPDATEREADY){
                                        appCache.swapCache();
                                        updateappInfo();
                                        }
                                      }, false);
            appCache.addEventListener('noupdate', function(e){
                                        updateappInfo();
                                        }, false);
            appCache.addEventListener('error', function(e){
                                        alert("error" + e.message);
                                      }, false);
            appCache.addEventListener('cached', function(e){
                                        alert("cached");
                                        updateappInfo();
                                      }, false);
        }

        if (appCache=== 'undefined'){alert("undefined");}
    }

对此有什么想法吗?
多谢。

最佳答案

此问题仅适用于Android浏览器,因为它不支持在托管服务器中没有MIME类型配置的“.manifest”扩展。
因此,尝试将“.manifest”添加为一个MIME类型,但失败,因为它不支持作为已附加另一个引用的MIME类型。
添加“.appcache”或“apache”使其正常工作。

<mimeMapfileExtension=".apache"mimeType="text/cache-manifest" />

(来源:Load cache manifest file

08-18 23:14