web-dev-qa-db-fra.com

Comment effacer l'historique de navigation en utilisant JavaScript?

Je fais un projet simple, prenons un site Web hautement sécurisé. J'ai 5 pages JSP différentes. Si j'ai commencé à partir de la première page JSP, il est redirigé vers la deuxième page JSP et ainsi de suite. En attendant, il ne devrait pas stocker ces pages dans l'historique de mon navigateur . Comment effacer l'historique de navigation en utilisant JavaScript?

14
Dinesh Kumar

Il n'est pas possible d'effacer l'historique des utilisateurs sans plugins. Et ce n’est pas un problème du point de vue du développeur, c’est le fardeau de l’utilisateur de nettoyer son historique.

Pour plus d'informations, reportez-vous à Comment effacer l'historique des navigateurs (IE, Firefox, Opera, Chrome) à l'aide de JavaScript ou de Java, à l'exception du navigateur lui-même?

10
San Krish

Pouvez-vous essayer d'utiliser document.location.replace(), il est utilisé pour effacer la dernière entrée de l'historique et la remplacer par l'adresse d'une nouvelle URL. replace() supprime l'URL du document actuel de l'historique du document, ce qui signifie qu'il n'est pas possible d'utiliser le bouton "Précédent" pour revenir au document d'origine.

<script type="text/javascript">
    function Navigate(){   
         window.location.replace('your link');
        return false;
    }
   </script>

HTML: 

   <button onclick="Navigate()">Replace document</button>
21
Krish R

Comme MDN Window.history () décrit:

Pour les pages de niveau supérieur, vous pouvez voir la liste des pages de l'historique de session, accessible via l'objet Historique, dans les menus déroulants du navigateur, à côté des boutons Précédent et Suivant.

Pour des raisons de sécurité, l'objet History n'autorise pas le code non privilégié à accéder aux URL d'autres pages de l'historique de la session, mais il lui permet de naviguer dans l'historique de la session.

Il n’existe aucun moyen de vider l’historique de la session ou de désactiver la navigation en arrière/en aval du code sans privilège. La solution disponible la plus proche est la méthode location.replace (), qui remplace l'élément actuel de l'historique de session par l'URL fournie.

Il n’existe donc pas de méthode Javascript pour effacer l’historique de la session. Si vous souhaitez bloquer la navigation vers une page donnée, vous pouvez utiliser la méthode location.replace () et passer le lien de la page en tant que paramètre. ne poussera pas la page dans la liste de l'historique de session du navigateur. Par exemple, il y a trois pages:

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>

Avec le lien href, nous pouvons naviguer de a.html à b.html à c.html. Dans b.html, nous utilisons la méthode location.replace(c.html) pour naviguer de b.html à c.html. Enfin, nous allons à c.html * et si nous cliquons sur le bouton Précédent du navigateur, nous passerons à ** a.html.

Alors c'est ça! J'espère que ça aide.

10
monjer

Non, ce serait un problème de sécurité .


Cependant, il est possible d'effacer l'historique en JavaScript au sein d'une extension Google Chrome. chrome.history.deleteAll () .
Utilisation

window.location.replace('pageName.html');

comportement similaire en tant que redirection HTTP

Lire Comment rediriger vers une autre page Web en JavaScript/jQuery?

3
Tushar Gupta

Vous ne pouvez pas effacer l'historique du navigateur. Il appartient à l'utilisateur, pas au développeur. Consultez également la documentation MDN .

Mise à jour: le lien que vous avez posté partout n'efface pas l'historique de votre navigateur. Cela empêche simplement d'utiliser le bouton de retour. 

1
Patrick Kostjens

D'accord. C’est une histoire ancienne, mais ma solution pourrait peut-être vous être utile, à vous ou à un autre développeur . Si je ne souhaite pas qu'un utilisateur appuie à nouveau sur la touche d'une page (disons que la page B est appelée depuis une page A) et passe retour à la dernière page (page A), je fais les prochaines étapes:

Premièrement, à la page A, appelez plutôt la page suivante en utilisant window.location.href ou window.location.replace, je passe un appel en utilisant deux commandes: window.open et window.close exemple à la page 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>;

Tous les modificateurs sur la fenêtre ouverte sont juste pour faire la page résultante. Cela ouvrira une nouvelle fenêtre (popWindow) sans possibilité d’utiliser la touche Précédent et fermera la page de l’appelant (page A).

Deuxièmement: à la page B, vous pouvez utiliser le même processus si vous voulez que cette page fasse la même chose.

Bien. Cela nécessite que l'utilisateur accepte que vous puissiez ouvrir des fenêtres contextuelles, mais dans un système contrôlé, comme si vous programmiez des pages pour votre travail ou votre client, ceci est facilement recommandé pour les utilisateurs. Acceptez le site en tant que confiance.

0
Milicua