Как очистить историю просмотров с помощью JavaScript?

Я делаю простой проект, давайте берем высокозащищенный сайт. У меня есть 5 разных страниц JSP. Если я начал с первой страницы JSP, она перенаправляется на вторую страницу JSP и так далее. Между тем, он не должен хранить эти страницы в истории моего браузера. Как очистить историю просмотров с помощью 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)!

Этот метод решает проблему Отключить обратную кнопку!!!