如何在点击后退按钮时刷新页面?

IT技术 javascript php jquery ajax .htaccess
2021-02-07 09:28:37

我使用 .htaccess 将所有流量路由到单个 index.php 文件。下面的代码用于引导流量,但由于某种原因它不适用于后退按钮。我不知道该怎么做才能让后退按钮工作。我尝试了各种各样的东西,并在谷歌上搜索了很多,但都没有奏效,所以我希望这里有人可以提供帮助!

<?php
   if(isset($_GET['parameters'])) {
      if($_GET['parameters'] == "repair")
         include 'repair.html';
      else if($_GET['parameters'] == "training")
         include 'training.html';
      else if($_GET['parameters'] == "products")
         include 'products.html';
      else if($_GET['parameters'] == "about")
         include 'about.html';
      else if($_GET['parameters'] == "employees")
         include 'employees.html';
      else if($_GET['parameters'] == "training")
         include 'training.html';
      else if($_GET['parameters'] == "newaccount")
         include 'newaccount.html';
      else if($_GET['parameters'] == "contact")
         include 'contact.html';
      else if($_GET['parameters'] == "recommended")
         include 'recommended.html';
      else if($_GET['parameters'] == "careers")
         include 'careers.html';
      else
         include 'home.html';
   }
   else
      include 'home.html';
?>

到目前为止,我已经尝试并未能使用: window.onbeforeunload body onunload=""

必须有办法onunload=location.reload()或某事!不知何故必须知道语法!

6个回答

试试这个……没有测试。我希望它对你有用。

新建一个php文件。您可以使用后退和前进按钮,页面上的数字/时间戳始终会更新。

<?php
header("Cache-Control: no-store, must-revalidate, max-age=0");
header("Pragma: no-cache");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
echo time();
?>
<a href="http://google.com">aaaaaaaaaaaaa</a>

或者

找到了另一个解决方案

当用户点击后退按钮时,应该触发 onload 事件。不是通过 JavaScript 创建的元素将保留它们的值。我建议在 INPUT TYPE="hidden" 设置为 display:none 中保留动态创建的元素中使用的数据的备份,然后使用输入的值将动态元素重建为它们原来的样子。

<input type="hidden" id="refreshed" value="no">
<script type="text/javascript">
onload=function(){
var e=document.getElementById("refreshed");
if(e.value=="no")e.value="yes";
else{e.value="no";location.reload();}
}
@CodeManiak 如果 PHP 已经发送了 HTTP 响应的正文,则无法修改标头信息。调用header应该任何输出发送到浏览器之前完成:检查任何文件包含的 echo/print 语句、恶意空格和未由 PHP 封装的 HTML。
2021-03-18 09:28:37
如果需要考虑,请考虑Pragma: no-cache为 HTTP 1.0 兼容性包含一个
2021-03-22 09:28:37
+1 +1 +1 希望我能为这个简单的解决方案投票更多。给定由 Javascript 设置的值的非动态创建的输入元素,在按下后退按钮时保留其值!!杰出的!因此,通过设置隐藏元素的值,即使按下后退按钮时 javascript 从头开始​​重新初始化,也可以保存最后的 javascript 状态。杰出的!!!+1 +1 +1
2021-03-23 09:28:37
啊,是的,这是我尝试的第三个解决方案,但我不断收到一些愚蠢的错误,我无法弄清楚已经加载的页面。我应该在哪里包含这些标题?当我尝试将它们包含在我的 index.php 文件中的所有内容之上时,我仍然出错
2021-04-11 09:28:37
我收到此错误Cannot modify header information - headers already sent by.....在我问这个问题之前,我已经用谷歌搜索并试图找出这个错误,但未能找到解决方案......那么我该怎么做才能解决它?
2021-04-12 09:28:37

最近的解决方案是使用PerformanceNavigation 界面

if(!!window.performance && window.performance.navigation.type === 2)
{
    console.log('Reloading');
    window.location.reload();
}

其中值 2 表示“通过导航到历史记录访​​问了该页面”。

在此处查看浏览器支持:http : //caniuse.com/#search=Navigation%20Timing%20API

通过浏览器后退按钮到达时重新加载站点

是的,是的,一千次是的。甚至支持IE9。
2021-03-14 09:28:37
@SeinopSys 很高兴知道!我挖得更深一些,该方法Navigation Timing Level 2 的一部分,它仍然是一个工作草案,但将来可能会成为标准。
2021-03-16 09:28:37
两年后才回来查看,导航计时级别 2 仍然是一个工作草案:/。网络移动太慢了。
2021-03-21 09:28:37
我的 IDE 告诉我这已被弃用,我不得不使用它window.performance.getEntriesByType('navigation')[0].type === "back_forward"
2021-04-10 09:28:37

隐藏输入解决方案在 Safari 中对我不起作用。下面的解决方案有效,来自这里

window.onpageshow = function(event) {
if (event.persisted) {
    window.location.reload() 
}
};

我找到了两种方法来处理这个问题。选择最适合您的情况。在 Firefox 53 和 Safari 10.1 上测试的解决方案

1.检测用户是否正在使用后退/前进按钮,然后重新加载整个页面

if (!!window.performance && window.performance.navigation.type === 2) {
            // value 2 means "The page was accessed by navigating into the history"
            console.log('Reloading');
            window.location.reload(); // reload whole page

        }

2. 如果页面被缓存,则重新加载整个页面

window.onpageshow = function (event) {
        if (event.persisted) {
            window.location.reload();
        }
    };

这个简单的解决方案张贴在这里强制页面刷新后退按钮有效......

当用户单击后退按钮时,我试图强制浏览器再次下载页面,但没有任何效果。我似乎现代浏览器有单独的页面缓存,它存储页面的完整状态(包括 JavaScript 生成的 DOM 元素),因此当用户按下后退按钮时,上一页会立即显示为用户已离开的状态。如果您想强制浏览器在后退按钮上重新加载页面,请将 onunload="" 添加到您的 (X)HTML 正文元素:

<body onunload="">

这将禁用特殊缓存并在用户按下后退按钮时强制页面重新加载。使用前请三思。需要此类解决方案的事实表明您的网站导航概念存在缺陷。

这是工作。非常感谢,这解决了我长期面临的问题,但没有找到解决方案。
2021-04-10 09:28:37
@bummi 这个解决方案在 IE 中不起作用,知道有什么替代解决方案吗?
2021-04-11 09:28:37