D'autres ont adopté l'approche de dire "ne faites pas cela", mais cela ne répond pas vraiment à la question de l'auteur. Supposons simplement que tout le monde sait que c'est une mauvaise idée, mais nous sommes curieux de savoir comment c'est fait malgré tout...
Vous ne pouvez pas désactiver le bouton de retour sur le navigateur de l'utilisateur, mais vous pouvez faire en sorte que votre application se casse (affiche un message d'erreur, obligeant l'utilisateur à recommencer) si l'utilisateur revient en arrière.
Une méthode que j'ai vue pour faire cela est de passer un jeton sur chaque URL dans l'application, et dans chaque formulaire. Le jeton est régénéré sur chaque page, et une fois que l'utilisateur charge une nouvelle page, tous les jetons des pages précédentes sont invalidés.
Lorsque l'utilisateur charge une page, la page ne s'affiche que si le jeton correct (qui a été transmis à tous les liens/formulaires sur la page précédente) lui a été passé.
L'application de banque en ligne que ma banque propose est ainsi. Si vous utilisez le bouton de retour, aucun autre lien ne fonctionnera et aucun rechargement de page ne pourra être effectué - à la place vous verrez un message vous indiquant que vous ne pouvez pas revenir en arrière, et vous devrez recommencer.
94 votes
Vous ne possédez pas les ordinateurs de vos utilisateurs ni leurs navigateurs.
47 votes
+1 Parce que bien que je sois d'accord que désactiver le bouton de retour des navigateurs est une 'mauvaise pratique', je ne vois aucune raison de voter négativement pour la question elle-même, répondre et expliquer pourquoi est la meilleure façon de faire à mon avis.
45 votes
Pourquoi sommes-nous hostiles à cette question? Pour tout ce que nous savons, la personne posant cette question sait déjà que c'est une mauvaise pratique en matière d'utilisation, mais suit simplement les exigences, ou peut-être veut-elle simplement apprendre quelque chose. Pourquoi ne pas simplement prétendre que c'est une question hypothétique, et répondre comment nous le ferions si nous devions faire ce genre de chose?
5 votes
Certaines choses ne devraient jamais être faites, peu importe le désir de les faire. Avoir une exigence non négociable à ce sujet indique instantanément que les exigences ont été fixées par des personnes qui n'ont pas à les fixer, ce qui est un problème beaucoup plus important.
0 votes
Voir : stackoverflow.com/questions/87422/…
39 votes
Ugh, J'ai écrit le commentaire le plus incroyable mais je l'ai perdu quand j'ai accidentellement appuyé sur le bouton retour.
4 votes
C'est comme demander: Comment désactiver la marche arrière avec un panneau de signalisation? Bien sûr, vous pouvez installer un panneau de rue à sens unique, mais vous ne pouvez jamais empêcher vraiment les gens d'aller dans le mauvais sens. Les concepteurs de la circulation le savent et intègrent une certaine tolérance à ce problème dans le système quand ils le peuvent. Les concepteurs d'applications Web (devraient) faire de même.
0 votes
La seule chose à faire ici est de retourner à la case départ.
2 votes
Comment créons-nous des jeux web qui n'aggravent pas nos clients lorsqu'ils touchent accidentellement la souris4 avec leur pouce? Peut-être que la désactivation de 'history.back' n'est pas la bonne approche, ce dont nous avons vraiment besoin est l'accès aux événements de souris4/souris5 (et un modèle preventDefault() sensé qui désactive incidentalement tout comportement par défaut de retour/arrière) - autant que je sache, ce n'est pas possible (ce qui explique probablement pourquoi un million de personnes cherchent à désactiver history.back)
0 votes
@reinierpost une meilleure analogie serait de vouloir empêcher la voiture de reculer sur les collines en supprimant toute possibilité de faire marche arrière, l'idée originale est bonne mais la mauvaise solution a été suggérée, si vous vous demandez pourquoi ils demandent, c'est probablement parce que les données mises en cache corrompraient le système si elles étaient soumises à nouveau, donc ils veulent probablement vraiment expirer la page
0 votes
@MikeT: Concevez donc le système pour empêcher les données mises en cache qui sont de nouveau envoyées de le corrompre.
0 votes
@reinierpost mon point était qu'ils ont un problème valide, et ce qui leur semble être une solution, en réalité la solution est terrible mais ils ne le savent pas. nous devons leur dire pourquoi et ensuite suggérer la solution correcte. votre analogie d'utiliser des panneaux de signalisation pour contrôler directement le véhicule rejette complètement le problème dans son ensemble comme insensé.
0 votes
@MikeT : bon point, c'est seulement absurde pour quelqu'un qui est conscient de la façon dont fonctionne le web et qui n'aime pas résoudre les problèmes à l'envers
0 votes
Si quelqu'un programme une application de flux de travail accessible sur le web pour ses employés ou utilisateurs, il est tout à fait légitime de contrôler le comportement du navigateur pendant qu'ils utilisent cette application de flux de travail. Nous ne parlons pas de détruire définitivement la capacité dans leurs navigateurs, nous parlons de la désactiver lorsqu'elle est utilisée spécifiquement dans l'application de l'OP. Pourquoi passer par un processus élaboré, alors qu'il est possible de simplement désactiver le bouton retour de cette page spécifique?
0 votes
@InstanceHunter - En fait, pour une application professionnelle fonctionnant sur un réseau sécurisé à l'aide d'équipements appartenant à l'entreprise..... oui, nous possédons effectivement les ordinateurs des utilisateurs et leurs navigateurs.