离开页面并返回页面时,不会保留 JS 页面格式
JS page formatting is not retained when navigating away from a page and back
当我离开页面时,我的页面格式有点问题,然后点击浏览器回到页面。
下面是一个示例:
我对下拉列表中的表单有安全问题,如下所示:
https://i.stack.imgur.com/ib32z.jpg
当用户从下拉列表中选择[输入您自己的问题]时,我有一些jquery可以动画化CSS更改,将表单向下推,并使"自定义安全问题"的隐藏字段可见。选中后,窗体如下所示:https://i.stack.imgur.com/uVPKo.jpg
现在我的困境是当我离开这个页面,然后使用浏览器后退按钮导航回来时,我的格式被搞砸了,看起来像这样:
https://i.stack.imgur.com/5Xhpi.jpg
我编写的 javascript 不会在后退按钮上再次触发,因此浏览器不知道将表单向下移动以适应间距的变化。无论如何,我可以强制文档.ready重新加载或清除某种缓存吗?
谢谢!
编辑:对不起,伙计们,我需要将图像重新上传到主机并重新发布。抱歉耽搁了。
基本上有四种机制可以在 Web 上保持状态:
- 基于浏览器 - 如果幸运的话,浏览器会将答案保存到表单字段中,并在看到具有相同名称的 INPUT 时重新显示它们;此外,某些浏览器会在向前<=>后导航之间保留一些状态
- 基于 cookie - 不言自明;您保存带有状态信息的 cookie,稍后检查以恢复状态
- 基于 URL - 导航到 URL 的不同哈希值,其中包含您想要的信息(例如。"?roll_down=真")
- HTML5/本地存储 - 如果您有兴趣,请查找:-)
基本上可以抛弃 1 和 4,因为它们都过于依赖浏览器行为/支持,而且我们不能可靠地依赖所有浏览器以我们想要的方式处理它们。剩下#2或#3。
Cookie允许您保存更多信息(与Cookie持有的信息一样多,即大约4k)。 URL 允许的信息较少,但它们具有书签功能的额外好处;如果用户将 URL 保存为书签(或他们发送给朋友的链接或其他任何内容),则状态仍会保留。
因此,您可以选择上述内容,决定如何保持"我的表单已向下滚动"状态......然后是(我认为)你真正感兴趣的部分:当用户单击"返回"时,你如何检查这种状态并修复问题?
这部分我谦虚地听从另一个SO帖子,它已经回答了它:有没有办法在javascript中捕获后退按钮事件?
- 分派点击事件并保留击键修饰符
- 防止Javascript注入(但保留文本格式和图像)
- ngTagsInput:保留原始数据提供者的数据格式
- 离开页面并返回页面时,不会保留 JS 页面格式
- HTML 保留字符串与 html 格式
- 从html中剥离邮件正文,并使用Javascript保留格式
- 如何在打印时保留存储在数据库中的文本格式
- 在setValue()之后未保留格式
- 使用javascript中的HTML保留缩进格式
- 将HTML复制到剪贴板,同时保留一些格式
- 保留jquery粘贴格式
- 如何在Java中迭代如下格式的日期范围25-12-2012到31-12-2012(应保留连字符)
- 在JavaScript代码片段区域保留格式
- 保留从数据库接收到的HTML格式的数据
- 在Angular绑定中保留HTML文本框换行格式
- 对 JSON 数据进行编码以保留 json 格式
- 从 DOM 保留换行符中提取无格式文本的最佳方法
- 使用带有可点击“更多”的 Jquery 修剪文本,但保留文本格式
- 如何在javascript编辑后使用JQuery Mobile刷新/保留HTML格式
- 在谷歌可视化API中使用分组聚合保留格式