59 votes

En Javascript, comment puis-je "effacer" l'historique (historique -1) ?

Lorsque l'utilisateur charge la page, je redirige immédiatement la fenêtre vers un autre emplacement.

Le problème est que lorsque l'utilisateur clique sur le bouton "retour", il retourne à la page qui a effectué la redirection.

Puis-je "annuler" l'historique de la page précédente ? De sorte que lorsque l'utilisateur clique sur la page précédente, il revient à DEUX pages en arrière ?

108voto

xdazz Points 85907

Au lieu d'utiliser window.location = url; à rediriger,

essayer :

window.location.replace(url);

après l'utilisation de replace(), la page actuelle ne sera pas ce qui signifie que l'utilisateur ne pourra pas utiliser le bouton Précédent pour pour y revenir.

9voto

T.J. Crowder Points 285826

Vous pouvez utiliser location.replace pour remplacer l'entrée de l'emplacement actuel (la page de redirection) par la nouvelle (la cible). Pour ce faire, vous devez effectuer la redirection via JavaScript plutôt qu'à l'aide de balises méta ou d'un 302. Par exemple :

// In the redirecting page
location.replace("path/to/target/page");

Exemple concret Exemple de source vivante

4voto

Rebecca Points 996

Si vous tombez sur cette page et que vous cherchez un moyen AngularJS d'accomplir cela (plutôt que du javascript), utilisez la méthode replace() du service $location ( la documentation ) :

Utilice $location.url('/newpath'); o $location.path('/newpath'); comme vous le feriez normalement pour faire la redirection dans angular. Et ensuite, il suffit d'ajouter $location.replace(); juste après. Vous pouvez également enchaîner les commandes comme suit :

$location.url('/newpath').replace();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X