【问题标题】:Reload the page when visited by clicking Back button in Firefox通过单击 Firefox 中的后退按钮访问时重新加载页面
【发布时间】:2012-05-01 20:41:51
【问题描述】:

我有一个页面,它可以将整个身体从查看者的屏幕中移出作为过渡。它工作正常,但是当用户点击浏览器中的后退按钮时,Firefox 会从没有正文的历史记录中调出缓存页面。

所以当我通过后退按钮访问时重新加载页面很简单。

我已尝试使用以下代码重新加载页面以避免重复重新加载。

<script type="text/javascript">
  window.onload=function(){
    var e=document.getElementById("refreshed");
    if(e.value=="no")e.value="yes";
    else{e.value="no";location.reload();}
  }
</script>
<input type="hidden" id="refreshed" value="no">

它没有解决问题,因为甚至没有调用匿名函数。

所以我尝试设置标题,以便浏览器不会缓存页面。

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">

也没有解决问题。

该页面在 Chrome 中运行良好。

我使用的 Firefox 版本是 12.0

如何使用 Javascript、JQuery 或任何其他客户端脚本重新加载页面?

【问题讨论】:

  • 我认为这在 chrome 中也不起作用,该值始终为 'no'
  • 在 chrome 中,匿名函数被调用并且页面不会重新加载。但是由于页面没有被缓存,所以没关系。我的问题是在 Firefox 中甚至没有调用该函数。

标签: javascript jquery html firefox


【解决方案1】:

导航回内存缓存页面时不会触发 onload 事件。

我认为您有三个主要选择:

  1. 使用 onpageshow 事件(在导航到缓存页面时会触发)。
  2. 通过添加卸载事件侦听器来防止页面在内存中缓存 (可以只是一个空函数)。
  3. 不要做烦人的卸载动画。

【讨论】:

  • 即使我讨厌烦人的卸载动画,但我这样做的客户特别要求卸载动画。非常感谢鲍里斯。
  • 啊,是的。客户有点像这样的 PITA。 ;)
  • +1。 “通过添加卸载事件侦听器来防止页面在内存中缓存”,效果很好。有一些documentation here
【解决方案2】:

我没有尝试,但 setTimeout 可能会有所帮助。

<script>
setTimeout(function() {
var e=document.getElementById("refreshed");
    if(e.value=="no")e.value="yes";
    else{e.value="no";location.reload();}
}, 1000);
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-26
    • 2011-06-05
    • 2012-11-14
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多