您可以使用localStorage
来保存状态,但我认为这不会停止您描述的自动重新加载行为。Apple 网站上有一个井字游戏示例:
https://developer.apple.com/library/safari/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007256-CH1-SW1
我不完全熟悉 jQuery Mobile 以及单页模板的工作原理,但是如果您可以通过保存当前 URL(例如 page2.html?param1=x¶m2=y),localStorage
那么您需要添加一些代码到您的页面会查找此存储值并在存在时重定向。
粗略的例子:你可能会在你的代码中加入这样的东西,在 jQuery 加载之后:
$('a').on('click', function(){
localStorage.currentURL = this.href
});
现在,每次您单击链接时,该值都会保存到localStorage
.
然后在相关页面的顶部,您可以放置如下内容:
if (localStorage.currentURL && location.currentURL != location.href) {
location.href = localStorage.currentURL;
}
此部分查找保存到的值localStorage
,如果找到,则将页面重定向到正确的 URL。它还确保保存的值不是您已经在的页面,否则我们最终会陷入无限循环。
从技术上讲,重新加载行为仍然存在,但您的应用程序可以根据您上次所在的位置进行自我重定向。这就是为什么您可能希望将其直接放在开始<body>
标记之后和任何其他脚本加载之前 - 以便它快速加载和重定向。
如果您想要一个真正颠覆重新加载行为的解决方案,我认为您必须探索使用 Apple 在此处提供文档的 HTML5 离线应用程序缓存:
https://developer.apple.com/library/safari/documentation/iphone/conceptual/safarijsdatabaseguide/OfflineApplicationCache/OfflineApplicationCache.html
实际上,我认为从技术上讲,这里的重新加载行为仍然存在,但是因为所有资产都在本地缓存,所以它足够快,您可能不会注意到。
希望有帮助!