访问时通过单击Firefox中的“返回”按钮重新加载页面

时间:2012-05-01 20:41:52

标签: javascript jquery html html5 firefox

我有一个页面,可以将观看者屏幕上的整个身体作为过渡动画。它工作正常但是当用户点击浏览器中的后退按钮时,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或任何其他客户端脚本重新加载页面?

2 个答案:

答案 0 :(得分:5)

导航回内存缓存页面时,没有onload事件触发。

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

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

答案 1 :(得分:0)

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

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