[英]How to reload a page, when user navigates back to the page from another page in React Native?
[英]How do you clear an HTML form on page reload but not when the user navigates BACK to the page?
我使用的技巧是,您以隐藏的形式存储一些数据以便能够持久保存它,以便当用户离开页面导航然后使用BACK按钮返回时,我可以将数据恢复到页面而无需再次点击服务器...
但是,此技巧意味着当用户单击刷新或重新加载...(甚至是Firefox中的shift-reload)时,也会发生相同的情况。 我想检测到用户单击的是重新加载,而不是单击“后退”按钮,这样我就可以重新加载时重新开始,但是当用户离开并返回时仍可以恢复以前的数据。
有没有办法做到这一点? 我一直在研究onbeforeunload事件等,但还没有发现任何东西。
编辑以解决乔什的“为什么?”问题:
该页面是带有一堆AJAX过滤器的搜索结果页面。 用户可能会花费大量时间来调整过滤器,以获取所需的搜索结果集...然后,如果他们单击离开页面或在URL栏中输入新地址...然后返回到页面上,如果我不做这样的事情,他们将不得不重新开始并再次进行所有过滤。 对于我们引入可用性测试的用户而言,这是非常令人沮丧的体验。
精通技术的用户可以通过打开新标签页而不是单击/键入来解决此问题,但是不幸的是,我们绝大多数用户都不精通技术,因此显而易见的解决方案是让页面还原当用户导航回到页面时过滤/结果。
另一方面,我可以想到两个原因,为什么用户可能会重新加载页面:
希望能清除它。
您可以在服务器端通过查看随请求发送的标头来执行此操作。 用户执行刷新或硬刷新时,将使用某些标头。
使用Fiddler或Firebug检查标头以查看可以使用的内容。
至少对于Firefox,按F5会导致
Cache-Control: max-age=0
要发送的标头。 做一个Ctrl-F5发送这些
Pragma: no-cache
Cache-Control: no-cache
有关其他浏览器行为的细分,请查看对另一个问题的出色回答 。
如果您无法使用基于表单的方法,则可能需要研究像RSH这样的“ ajax历史”库。
当我加载包含表单的页面时,我会像以前一样填写以前存储的值,然后从会话中清除该数据。 第二页刷新将找不到任何存储的数据并提供空白表格。 如果重新提交表单,则我将新数据存储回会话中,准备按后退按钮...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.