首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让web应用程序在iPod上脱机工作

无法让web应用程序在iPod上脱机工作
EN

Stack Overflow用户
提问于 2010-11-20 01:26:59
回答 3查看 3.7K关注 0票数 5

我已经编写了一个基本的密码管理器,它可以在移动设备上脱机运行(在第4代iPod Touch上进行测试)。我已经把这个应用程序添加到主屏幕上了,当iPod在线的时候,它可以正常工作,并且可以到达服务器。一旦我让iPod离线,当我打开应用程序时,会出现以下对话框:

无法打开PwdThing PwdThing无法打开,因为它没有连接到因特网

应用程序(passwordthing.html)的单个静态HTML文件指向清单文件:

代码语言:javascript
复制
<html manifest="cache.manifest">
...

cache.manifest文件包括应用程序使用的所有文件(包括jQuery移动电话文件):

代码语言:javascript
复制
CACHE MANIFEST
passwordthing.html
passwordthing.js
...

并将cache.manifest文件设置为.htaccess文件中的text/cache-manifest

代码语言:javascript
复制
AddType text/cache-manifest .manifest

所有源文件都在Github上(此承诺是编写本文时的版本),我也设置了一个公共服务器来安装它。

为什么我不能让我的应用程序离线工作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-20 02:34:40

我唯一能想到的就是您没有更改文件,而且mobile缓存了清单的旧版本。向清单中添加注释。您可能还想尝试更改清单文件本身的名称;我必须这样做才能使我的IPad缓存--每次更新应用程序时,我都会更改清单的名称以包括日期。

请注意,iOS4.2有更好的清单支持。当它出来的时候,你可能会看到事情有所改善。

编辑--或者,事实证明,它只是一个糟糕的文件名。)(见关于问题的评论)。

票数 2
EN

Stack Overflow用户

发布于 2010-12-05 23:42:24

[[在下面复制我在这里的回答,因为它可能适用于:]]

我发现调试HTML5离线应用程序很痛苦。我发现本文中的代码帮助我找出了我的应用程序的问题所在:

http://jonathanstark.com/blog/2009/09/27/debugging-html-5-offline-application-cache/

用Jonathan调试HTML 5脱机应用程序缓存 如果您希望提供对web应用程序的脱机访问,HTML5中可用的脱机应用程序缓存是致命的。然而,这是一个巨大的皮塔调试,特别是当你仍然试图让你的头。 如果您正在处理缓存清单,请将以下JavaScript添加到您的主HTML页面中,并使用Firefox中的Firebug或Debug > Safari中的Show控制台查看控制台中的输出。 如果您有任何问题,PLMK在评论中。 HTH, J

代码语言:javascript
复制
var cacheStatusValues = [];
cacheStatusValues[0] = 'uncached';
cacheStatusValues[1] = 'idle';
cacheStatusValues[2] = 'checking';
cacheStatusValues[3] = 'downloading';
cacheStatusValues[4] = 'updateready';
cacheStatusValues[5] = 'obsolete';

var cache = window.applicationCache;
cache.addEventListener('cached', logEvent, false);
cache.addEventListener('checking', logEvent, false);
cache.addEventListener('downloading', logEvent, false);
cache.addEventListener('error', logEvent, false);
cache.addEventListener('noupdate', logEvent, false);
cache.addEventListener('obsolete', logEvent, false);
cache.addEventListener('progress', logEvent, false);
cache.addEventListener('updateready', logEvent, false);

function logEvent(e) {
    var online, status, type, message;
    online = (navigator.onLine) ? 'yes' : 'no';
    status = cacheStatusValues[cache.status];
    type = e.type;
    message = 'online: ' + online;
    message+= ', event: ' + type;
    message+= ', status: ' + status;
    if (type == 'error' && navigator.onLine) {
        message+= ' (prolly a syntax error in manifest)';
    }
    console.log(message);
}

window.applicationCache.addEventListener(
    'updateready',
    function(){
        window.applicationCache.swapCache();
        console.log('swap cache has been called');
    },
    false
);

setInterval(function(){cache.update()}, 10000);
票数 1
EN

Stack Overflow用户

发布于 2012-10-11 22:03:14

此外,确保cache.manifest具有与HTML中的BOM匹配的正确BOM(在我的例子中是UTF-8)。如果您只有一个非BOM ASCII文件,并且内容类型被设置为UTF-8,缓存将失败

有人吗。

克里斯汀·波尔森

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4230748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档