编程语言
首页 > 编程语言> > javascript – 如何在使用浏览器后退按钮时强制重新加载页面?

javascript – 如何在使用浏览器后退按钮时强制重新加载页面?

作者:互联网

我需要以某种方式检测用户是否已按下浏览器后退按钮并使用jquery重新加载页面并刷新(重新加载内容和CSS).

如何通过jquery检测这样的动作?

因为如果我在浏览器中使用后退按钮,所以现在不会重新加载某些元素.但是,如果我在网站中使用链接,则所有内容都会刷新并正确显示.

重要!

有些人可能误解了我想要的东西.我不想刷新当前页面.我想按下后退按钮后刷新加载的页面.这是我更详细的意思:

>用户正在访问page1.
>在第1页上 – 他点击了第2页的链接.
>他被重定向到page2
>现在(重要的部分!)他点击了浏览器中的后退按钮,因为他想回到第1页
>他回到了第1页 – 现在正在重新加载page1,并发出警告,例如“你回来了!”

解决方法:

当浏览器通过历史记录遍历导航到您的页面时,您可以使用pageshow事件来处理这种情况:

window.addEventListener( "pageshow", function ( event ) {
  var historyTraversal = event.persisted || 
                         ( typeof window.performance != "undefined" && 
                              window.performance.navigation.type === 2 );
  if ( historyTraversal ) {
    // Handle page restore.
    window.location.reload();
  }
});

请注意,也可能涉及HTTP缓存.您需要在服务器上设置与缓存相关的正确HTTP标头,以仅缓存那些需要缓存的资源.您还可以强制重新加载以安装浏览器以忽略HTTP缓存:window.location.reload(true).但我不认为这是最好的解决方案.

有关更多信息,请检查

>关于MDN的Working with BFCache文章
> WebKit Page Cache II – The unload Event by Brady Eidson
> pageshow关于MDN的事件参考
> Ajax, back button and DOM updates问题
> JavaScript – bfcache/pageshow event – event.persisted always set to false?问题

标签:page-refresh,javascript,jquery,browser,browser-cache
来源: https://codeday.me/bug/20190919/1812942.html