Я делаю простой проект, давайте берем высокозащищенный сайт. У меня есть 5 разных страниц JSP. Если я начал с первой страницы JSP, она перенаправляется на вторую страницу JSP и так далее. Между тем, он не должен хранить эти страницы в истории моего браузера. Как очистить историю просмотров с помощью JavaScript?
Как очистить историю просмотров с помощью JavaScript?
Ответ 1
Невозможно очистить историю пользователя без плагинов. А также это не проблема на перспективу разработчика, это бремя пользователя, чтобы очистить его историю.
Для справки обратитесь к Как очистить историю браузеров (IE, Firefox, Opera, Chrome) с помощью JavaScript или Java, кроме самого браузера?
Ответ 2
Можете ли вы попробовать использовать document.location.replace()
, чтобы очистить последнюю запись в истории и заменить ее адресом нового URL-адреса. replace()
удаляет URL-адрес текущего документа из истории документа, что означает невозможность использования кнопки "Назад" для перехода к исходному документу.
<script type="text/javascript">
function Navigate(){
window.location.replace('your link');
return false;
}
</script>
HTML:
<button onclick="Navigate()">Replace document</button>
Ответ 3
Как описывает MDN Window.history():
Для страниц верхнего уровня вы можете увидеть список страниц в истории сеансов, доступных через объект History, в раскрывающихся списках браузера рядом с кнопками назад и вперед.
По соображениям безопасности объект History не позволяет непривилегированному коду обращаться к URL-адресам других страниц в истории сеанса, но он позволяет ему перемещаться по истории сеанса.
Невозможно очистить историю сеанса или отключить навигацию назад/вперед из непривилегированного кода. Наиболее близким доступным решением является метод location.replace(), который заменяет текущий элемент истории сеанса указанным URL-адресом.
Таким образом, не существует метода Javascript для очистки истории сеанса, вместо этого, если вы хотите заблокировать переход обратно на определенную страницу, вы можете использовать метод location.replace() и передать ссылку на страницу в качестве параметра, который не будет выдвигать страница в списке истории браузера. Например, есть три страницы:
a.html:
<!doctype html>
<html>
<head>
<title>a.html page</title>
<meta charset="utf-8">
</head>
<body>
<p>This is <code style="color:red">a.html</code> page ! Go to <a href="b.html">b.html</a> page !</p>
</body>
</html>
b.html:
<!doctype html>
<html>
<head>
<title>b.html page</title>
<meta charset="utf-8">
</head>
<body>
<p>This is <code style="color:red">b.html</code> page ! Go to <a id="jumper" href="c.html">c.html</a> page !</p>
<script type="text/javascript">
var jumper = document.getElementById("jumper");
jumper.onclick = function(event) {
var e = event || window.event ;
if(e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = true ;
}
location.replace(this.href);
jumper = null;
}
</script>
</body>
c.html:
<!doctype html>
<html>
<head>
<title>c.html page</title>
<meta charset="utf-8">
</head>
<body>
<p>This is <code style="color:red">c.html</code> page</p>
</body>
</html>
С помощью ссылки href мы можем перейти от a.html к b.html к c.html. В b.html мы используем метод location.replace(c.html)
для перехода от b.html к c.html. Наконец, мы переходим к c.html *, и если мы нажмем кнопку "Назад" в браузере, мы перейдем к ** a.html.
Вот и все! Надеюсь, поможет.
Ответ 4
Нет, это будет проблемой безопасности.
Тем не менее, можно очистить историю JavaScript в рамках расширения хром Google. chrome.history.deleteAll().
Используйте
window.location.replace('pageName.html');
аналогичное поведение как перенаправление HTTP
Прочитайте Как перенаправить на другую веб-страницу в JavaScript/jQuery?
Ответ 5
Вы не можете очистить историю браузера. Он принадлежит пользователю, а не разработчику. Также просмотрите документацию MDN.
Обновление: ссылка, которую вы размещали по всему, фактически не очищает историю вашего браузера. Он просто предотвращает использование кнопки "Назад".
Ответ 6
Хорошо. Это древняя история, но моё решение может оказаться полезным для вас или других разработчиков. Если я не хочу, чтобы пользователь нажимал клавишу возврата на странице (скажем, страницу B вызывали со страницы A) и возвращался на последнюю страницу (страница A), я делаю следующие шаги:
Во-первых, на странице A вместо вызова следующей страницы с помощью window.location.href
или window.location.replace
я звоню с помощью двух команд: window.open
и window.close
пример на странице A:
<a href="#"
onclick="window.open('B.htm','B','height=768,width=1024,top=0,left=0,menubar=0,
toolbar=0,location=0,directories=0,scrollbars=1,status=0');
window.open('','_parent','');
window.close();">
Page B</a>;
Все модификаторы при открытии окна предназначены только для создания получающейся страницы. Это откроет новое окно (popWindow) без возможности использования клавиши возврата и закроет страницу вызывающего абонента (Страница A).
Второе: на странице B вы можете использовать тот же процесс, если хотите, чтобы эта страница делала то же самое.
Что ж. Для этого пользователь должен принять, что вы можете открывать всплывающие окна, но в управляемой системе, как будто вы программируете страницы для своей работы или клиента, это легко рекомендуется для пользователей. Просто примите сайт как доверенный.
Ответ 7
чтобы отключить функцию возврата кнопки назад:
window.addEventListener('popstate', function (event) {
history.pushState(null, document.title, location.href);
});
Ответ 8
Назад остается серым (отключено), если вы используете только b.html(c.html)!
Этот метод решает проблему Отключить обратную кнопку!!!