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