5

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

4

2 回答 2

5

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

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

  1. 使用 onpageshow 事件(导航到缓存页面时会触发)。
  2. 通过添加卸载事件侦听器(可以只是一个空函数)来防止页面的内存缓存。
  3. 不要做烦人的卸载动画。
于 2012-05-02T00:35:43.537 回答
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>
于 2012-05-01T23:28:25.347 回答