0

当我离开时,页面格式有点问题,然后将浏览器返回到页面。

这是一个例子:

我在下拉列表中的表单上有安全问题,如下所示:

http://i.stack.imgur.com/ib32z.jpg

当用户从下拉列表中选择 [Type in your own question] 时,我有一些 jquery 动画一个 CSS 更改,将表单向下推,并使“自定义安全问题”的隐藏字段可见。选中后,表单如下所示:http: //i.stack.imgur.com/uVPKo.jpg

现在我的困境是当我离开这个页面,然后使用浏览器的后退按钮导航回来时,我的格式被搞砸了,看起来像这样:

http://i.stack.imgur.com/5Xhpi.jpg

我编写的 javascript 不会在后退按钮上再次触发,因此浏览器不知道将表单向下移动以适应间距的变化。无论如何我可以强制 document.ready 重新加载或清除某种缓存吗?

谢谢!

编辑:对不起,我需要将图像重新上传到主机并重新发布。抱歉耽搁了。

4

1 回答 1

1

在 Web 上持久化状态基本上有四种机制:

  1. 基于浏览器 - 如果幸运的话,浏览器会将答案保存到表单字段并在看到具有相同名称的 INPUT 时重新显示它们;此外,一些浏览器会在前进<=>后退导航之间保留一些状态
  2. 基于 Cookie - 不言自明;您保存带有状态信息的 cookie,稍后检查以恢复状态
  3. 基于 URL - 导航到您的 URL 的不同哈希,其中包含您想要的信息(例如“?roll_down = true”)
  4. HTML5/本地存储 - 如果您有兴趣,请查看 :-)

我们基本上可以扔掉 1 和 4,因为它们都过于依赖浏览器的行为/支持,我们不能可靠地依赖所有浏览器来按照我们想要的方式处理它们。剩下#2 或#3。

Cookies 允许您保存更多信息(与 cookie 所保存的一样多,即大约 4k)。URL 允许的信息较少,但它们具有书签功能的额外好处;如果用户将 URL 保存为书签(或作为他们发送给朋友的链接等),则该状态仍会保留。

因此,选择上述选项,决定如何保持“我的表单已向下滚动”状态......然后是(我认为)您真正感兴趣的部分:您如何检查此状态和当用户单击“返回”时修复问题?

那部分我谦虚地推迟到另一个 SO 帖子,它已经回答了它: 有没有办法在 javascript 中捕获后退按钮事件?

于 2012-06-05T17:27:44.170 回答