我使用.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()
之类的东西!不知何故必须知道语法!!
答案 0 :(得分:41)
试试这个......没有经过测试。我希望它对你有用。
制作一个新的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”设置中保留动态创建元素中使用的数据的备份,以显示:none然后onload使用输入值将动态元素重建为它们的方式。
<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();}
}
答案 1 :(得分:31)
更新的解决方案是使用The PerformanceNavigation interface:
if(!!window.performance && window.performance.navigation.type === 2)
{
console.log('Reloading');
window.location.reload();
}
值2表示“通过导航到历史记录访问页面”。
在此处查看浏览器支持: http://caniuse.com/#search=Navigation%20Timing%20API
答案 2 :(得分:13)
隐藏的输入解决方案在Safari中并不适合我。以下解决方案有效,来自here。
window.onpageshow = function(event) {
if (event.persisted) {
window.location.reload()
}
};
答案 3 :(得分:8)
这里发布的这个简单的解决方案Force page refresh on back button有效......
当用户点击后退按钮时,我试图强制用浏览器再次下载页面,但没有任何效果。我看来,现代浏览器具有单独的页面缓存,它存储页面的完整状态(包括JavaScript生成的DOM元素),因此当用户按下后退按钮时,前一页面立即显示在用户离开的状态。如果要强制浏览器重新加载后退按钮上的页面,请添加onunload =&#34;&#34;到您的(X)HTML正文元素:
<body onunload="">
这会禁用特殊缓存并在用户按下时强制页面重新加载 返回键。使用前请三思而后行。需要这样的事实 解决方案是暗示您的网站导航概念存在缺陷。
答案 4 :(得分:8)
我找到了两种方法来处理这个问题。选择最适合您的情况。 在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();
}
};
答案 5 :(得分:2)
$(document).ready(function(){
$('.ajaxAnchor').on('click', function (event){
event.preventDefault();
var url = $(this).attr('href');
$.get(url, function(data) {
$('section.center').html(data);
var shortened = url.substring(0,url.length - 5);
window.location.hash = shortened;
});
});
});
答案 6 :(得分:1)
首先在代码中插入字段:
<input id="reloadValue" type="hidden" name="reloadValue" value="" />
然后运行jQuery:
<script type="text/javascript">
jQuery(document).ready(function()
{
var d = new Date();
d = d.getTime();
if (jQuery('#reloadValue').val().length === 0)
{
jQuery('#reloadValue').val(d);
jQuery('body').show();
}
else
{
jQuery('#reloadValue').val('');
location.reload();
}
});
答案 7 :(得分:1)
您可以通过单击后退按钮使用以下内容刷新页面:
window.addEventListener('popstate', () => {
location.reload();
}, false);
答案 8 :(得分:0)
答案 9 :(得分:-4)
Ahem u_u
正如我所说,后退按钮是我们每个人在某个地方痛苦的......那说......
只要您正常加载页面就会造成很多麻烦...对于标准的“网站”来说,它不会改变那么多......但我认为你可以做出类似这样的事情
用户每次访问您的页面.php,选择要加载的内容。您可以尝试使用缓存(不缓存页面)以及可能过期日期。
但长期解决方案将在“onload”事件上放置一个代码来获取Ajax数据,这样你就可以(用Javascript)运行你想要的代码,并刷新页面。