防止在“后退”按钮上重新加载页面(使用缓存)。或向下滚动用户。(至少在iPhone上发出)

use*_*003 5 html javascript browser-history

是否可以防止用户单击浏览器的后退按钮时重新加载页面?还是至少确保页面像以前一样向下滚动?

我的网页显示项目列表。用户向下滚动,然后单击某个项目以转到另一个页面。当他们然后单击“后退”按钮时,我希望他们回到原来的页面,向下滚动。

这在我的桌面(Windows,Chrome)上可以正常工作,但是在我的iPhone(iOS7,Safari和Chrome)上,它可以重新加载页面,这首先需要花费时间,而且很烦人。然后,Chrome浏览器向下滚动,但Safari不会向下滚动,这意味着用户又回到了顶部。实际上,该行为似乎并不十分一致。

这仅仅是浏览器做出的决定吗?屏幕锁定并解锁后,它还会重新加载页面。(再次,我正在尝试在iPhone上使用。)或者是否与我的html / header / js有关?

我在考虑可以使用HTML缓存,然后在页面本身上跟踪用户滚动了多远。然后,当从缓存中重新加载页面时,我可以使其向下滚动到之前的位置。那真的是要走的路吗?

看起来www.amazon.com可以正常运行,所以必须有一些解决方案。

jth*_*ter -1

我不相信您可以“当用户单击浏览器后退按钮时阻止页面重新加载”(正如您的问题开始时)。用户应该对浏览器的导航位置拥有最终决定权。

\n\n

您可以将一个函数绑定到该beforeunload事件,并在该函数中放置一个警报,该警报将延迟用户按下backreload让他们有机会阅读自定义消息并选择继续或取消。

\n\n

这是 jQuery 中的:

\n\n
$(window).bind(\'beforeunload\', function() {\n  return \'Are you sure?\';\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload

\n\n

如果您关心的是更简单地重新加载上一页的缓存和滚动版本,而不是执行完全全新的重新加载\xe2\x80\xa6,这听起来更像是内容服务器上的设置和/或用户上的设置\ 的浏览器。

\n\n

我知道通过我的注册商/主机,我可以登录并访问 GUI 缓存控件,或者我可以在我的注册器/主机中上传自定义缓存指令.htaccess文件中上传自定义缓存指令。据我了解,这些将控制是否允许用户从您的服务器缓存文件以及缓存多长时间。用户的网络浏览器也应该具有是否缓存文件或每次都加载新鲜的设置。

\n