【问题标题】:Manipulate HTML5 application history处理 HTML5 应用程序历史记录
【发布时间】:2013-05-28 21:58:52
【问题描述】:

PhoneGap 移动应用程序有以下场景:

  1. 应用打开并显示 index.html
  2. 用户登录并被重定向到 home.html
  3. 然后用户可以转到 news.html
  4. 我想处理 home.html 中的后退按钮,如果上一页(返回历史后的页面)是 news.html,我希望浏览器使用 @987654323 返回历史@。但是如果上一页是index.html,我想用navigator.app.exitApp();关闭应用

我的意思是,在登录后,用户应该永远无法再次登陆 index.html。

【问题讨论】:

  • 这似乎被误导了可用性 - 历史的全部目的是能够访问您以前访问过的页面,如果您编写脚本来挑战它,那么您做错了什么。您的应用需要这种行为吗?
  • 您使用的是哪种服务器端脚本?也许您可以让 index.php 根据会话状态提供登录页面或主页?
  • 这是一个 HTML 页面,没有服务器端代码。但是您不希望用户在登录后显示登录页面
  • 同意,但有比覆盖本机浏览器行为更好的方法。查看 cookie - w3schools.com/js/js_cookies.asp。如果您未检测到 cookie,则用户未登录,因此显示登录页面。如果您确实检测到 cookie,则用户已登录,因此显示主页内容。
  • cookies 或 localStorage 如何解决这个问题?用户要经过 index.html 页面才能打开 home.html 页面。问题是当他反击时

标签: javascript cordova browser-history


【解决方案1】:

不要这样做,而是执行以下操作:

  1. 应用打开并显示 index.html
  2. 用户登录并使用 History API 被重定向到 home.html 您使用 history.replaceState() 将页面的当前状态替换为“home.html”
  3. 现在用户首先“从未”在 index.html 上

了解manipulating the browser history。这应该适用于 Phonegap。

【讨论】:

  • replaceState 是我想要的!它有效,这是代码:history.replaceState({page: this.href}, '', 'home.html');document.location = 'home.html';
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-23
  • 2012-07-22
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
  • 2013-04-25
相关资源
最近更新 更多