Как обновить страницу нажатием кнопки "Назад"?
Я использую .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()
или что-то в этом роде! Почему-то нужно знать синтаксис!!
Ответы
Ответ 1
Попробуйте это... не проверено. Надеюсь, это сработает для вас.
Создайте новый 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", который будет отображаться: no then 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();}
}
Ответ 2
В более позднем решении используется интерфейс PerformanceNavigation:
if(!!window.performance && window.performance.navigation.type === 2)
{
console.log('Reloading');
window.location.reload();
}
Если значение 2 означает "Доступ к странице осуществляется путем навигации по истории".
Просмотреть поддержку браузера здесь:
http://caniuse.com/#search=Navigation%20Timing%20API
Перезагрузите сайт, когда он достигнут с помощью кнопки браузера назад
Ответ 3
Скрытое входное решение не работало для меня в Safari. Нижеприведенное решение работает и вышло из здесь.
window.onpageshow = function(event) {
if (event.persisted) {
window.location.reload()
}
};
Ответ 4
Я нашел два способа справиться с этим. Выберите лучшее для своего дела.
Решения, протестированные на 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
Это простое решение, размещенное здесь принудительно обновить страницу на обратной кнопке...
Я попытался заставить страницу снова загружаться браузером, когда пользователь нажимает кнопку "Назад" , но ничего не работает. Похоже, что у современных браузеров есть отдельный кэш для страниц, в котором хранится полное состояние страницы (включая элементы DOM, созданные с помощью JavaScript), поэтому, когда пользователи нажимают кнопку "Назад" , предыдущая страница отображается мгновенно в том состоянии, когда пользователь ее покинул. Если вы хотите заставить браузер перезагружать страницу по кнопке "Назад" , добавьте onunload = "" к вашему элементу тела HTML (X):
<body onunload="">
Это отключает специальный кеш и принудительно перезагружает страницу при нажатии пользователем Кнопка назад. Подумайте дважды, прежде чем использовать его. Факт необходимости такой решение - это намек на то, что ваша концепция навигации сайта ошибочна.
Ответ 6
Вы попробовали что-то вроде этого? не проверено...
$(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;
});
});
});
Ответ 7
Прежде всего, вставьте код в свой код:
<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();
}
});
Ответ 8
Чтобы обновить страницу, нажав кнопку "Назад", можно использовать следующее:
window.addEventListener('popstate', () => {
location.reload();
}, false);
Ответ 9
window.onbeforeunload = function() {redirect (window.history.back(1)); };
Ответ 10
Это сработало для меня. Просто добавьте этот код внизу страницы. Надеюсь, это поможет.
window.addEventListener("pageshow", function(event) {
var historyTraversal = event.persisted || (typeof window.performance !=
"undefined" && window.performance.navigation.type === 2);
if (historyTraversal) {
// Handle page restore.
window.location.reload();
}
});
Я выполнил эту задачу с помощью описанного выше трюка. Я добавил прослушиватель событий, который вызывается, когда кто-то возвращается на страницу с помощью кнопки "Назад" в браузере и на этом событии просто перезагружает страницу. Надеюсь, это поможет.
Ответ 11
Ahem u_u
Как я уже сказал, кнопка возврата для каждого из нас - боль в каком-то месте... это говорит...
Пока вы загружаете страницу, это вызывает много проблем... для стандартного "сайта" это не изменится так сильно... однако я думаю, что вы можете сделать что-то вроде этого
Пользователь каждый раз обращается к вашей странице .php, которая выбирает, что загрузить. Вы можете немного поработать с кешем (чтобы не кэшировать страницу) и, возможно, срок действия.
Но для долгосрочного решения будет добавлен код в событии onload, чтобы получить данные Ajax, таким образом вы можете (с Javascript) запустить нужный код и пример обновить страницу.