L'application Web monopage est écrite à l'aide de vue vue-router.
Il faut interdire le retour en arrière de certaines pages. J'ai écrit si la page actuelle peut revenir en arrière dans les méta-informations de routage, telles que AllowBack.
J'ai trouvé l'information et le moyen de désactiver le retour en arrière est
history.pushState(null, null, location.href)
Le projet précédent utilisait vue1.0, la solution est
1. 在全局的router.beforeEach 里面 判断当前路由的handler里面的allowBack变量是否为false
2. 如果为false 则 history.pushState(null, null, location.href)
Maintenant je passe à vue2.0, la méthode d'origine ne fonctionne plus,
Le problème maintenant est que je ne sais pas où mettre le code history.pushState(null, null, location.href)
Ou avez-vous d'autres solutions ? Merci! !
En fait, le scénario d'utilisation principal est le suivant :
Cliquez sur la barre d'onglets pour passer à une autre page. Si je suis actuellement sur la page a et que je clique sur la barre d'onglets pour accéder à la page b, je ne peux pas revenir à la page a en appuyant sur la touche retour, mais je peux accéder à la page a en cliquant sur la barre d'onglets Page
Question et réponse...
L'exigence est la suivante : un certain itinéraire ne peut pas être renvoyé via le navigateur, et en même temps n'affecte pas la commutation entre eux
Traitons les solutions et l'utilisation :
1. Ajoutez des méta-informations à cet itinéraire dans la configuration du routage, telles que :
2. Obtenez le statut AllowBack dans la fonction globale router.beforeEach et mettez à jour la valeur AllowBack de vuex en même temps, par exemple :
Ce code doit être écrit après next(), car location.href écrit avant next() n'est pas l'adresse de to, ce qui est un peu différent de vue1.0
3. La prochaine étape est le noyau, enregistrez l'événement onpopstate monté dans app.vue :
La suppression de history.pushState(null, null, location.href) peut également empêcher le retour en arrière, mais le composant sera restitué, cette partie est donc également critique
Essayez ceci et voyez