防止缓存的iPhone webapp重新加载(滚动到顶部)

防止缓存的iPhone webapp重新加载(滚动到顶部),iphone,caching,scroll,web-applications,reload,Iphone,Caching,Scroll,Web Applications,Reload,我有一个iphonewebapp,它使用缓存清单离线工作。我将webapp添加到主屏幕,使用它(比如滚动到页面上的某个位置),然后返回主屏幕。 当我再次打开应用程序时,有一小段时间我看到了我过去的位置(在该页面上的滚动位置),但随后应用程序“重新加载”,我被滚动到主页的顶部。有没有办法防止这种“重新加载”?即使在飞行模式下也会发生这种情况(即所有东西都在缓存中工作)。//加载时 window.scroll(0,0); 为确保启动时不显示旧内容,我在页面中使用此选项: addEventListe

我有一个iphonewebapp,它使用缓存清单离线工作。我将webapp添加到主屏幕,使用它(比如滚动到页面上的某个位置),然后返回主屏幕。 当我再次打开应用程序时,有一小段时间我看到了我过去的位置(在该页面上的滚动位置),但随后应用程序“重新加载”,我被滚动到主页的顶部。有没有办法防止这种“重新加载”?即使在飞行模式下也会发生这种情况(即所有东西都在缓存中工作)。

//加载时

window.scroll(0,0);
为确保启动时不显示旧内容,我在页面中使用此选项:

addEventListener('unload',function(){$('body').hide();})


因此,页面的最后状态为空,并且是再次打开页面时向用户显示的状态。

我认为没有真正的“重新加载”事件。我们得到的只有onload和onunload

onload处理程序将启动,就像您第一次访问页面一样

onunload处理程序是清除旧内容的关键

我喜欢为返回我的web应用程序的用户提供其他内容

window.onunload=function(){
  document.getElementsByTagName('body')[0].className+=' unloading'
}
让CSS做一些肮脏的工作来隐藏大部分正文并显示其他内容


(这个答案不依赖于jQuery或其他框架)

您看到的只是默认的启动映像,它只是您上次所在位置的屏幕截图。这不是“重新加载”;应用程序一开始没有加载


搜索“apple touch startup image”以设置真实的加载图像。

我在这里遇到的问题是,如果我使用常规Safari,而不是在“支持apple mobile web app”模式下运行,应用程序实际上似乎“在内存中”停留的时间更长。在后一种情况下,只需按下home按钮,然后切换回应用程序的任务就会导致重新加载。在Safari中做同样的事情通常不会重新加载。因此,使用“支持apple mobile web app”会让我更糟糕。

在普通的Safari应用程序中,这一直困扰着我,它总是尝试重新加载上一页…确保应用程序使用缓存清单中的最新文件也是一个好主意:window.applicationCache.addEventListener('updateready',function(){window.applicationCache.swapCache();window.location.reload(true);},false);啊,所以这是一种错觉,我留下的应用程序状态已经被记住了?在关闭之前没有机会实际存储滚动位置?您可以自己将其保存到本地存储:当您进入滚动时,重置一个250毫秒的计时器;当计时器过期时,保存滚动位置,可能是相对于最近的锚到帐户的位置r页面正在更改。在加载时还原它。仅当window.navigator.standalone为true时才执行这些操作。