Comment trouver si l'utilisateur clique sur le bouton de retour du navigateur ou sur le bouton Actualiser
J'ai besoin de savoir si l'utilisateur a cliqué sur le bouton précédent du navigateur ou le bouton Actualiser.
J'ai besoin de rediriger la page vers une page d'Erreur quand il clique sur le dos ou le bouton actualiser. Comment faire cela.
J'ai besoin de le faire en javascript pour mon ASP.net page
source d'informationauteur balaweblog
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, de donner des messages d'erreur si les utilisateurs utilisent ou ont pour actualiser une page pour quelque raison que ce soit, c'est une très mauvaise idée. Au lieu de cela, vous devriez traiter de manière transparente. Pensez à une page ne vient pas entièrement en raison de problèmes sur le transport de niveau, la seule option que l'utilisateur a est de recharger ou de revenir en arrière.
Pour répondre à votre question, vous devez garder une trace de la navigation de l'utilisateur sur vous-même, cela signifie que sur le côté serveur. Oublier java-script ici. Si l'utilisateur visite un site web, vous pouvez la stocker des informations dans une Session associée à l'utilisateur (il existe plusieurs méthodes de conservation de ces sessions uniques, et je n'entrerai pas dans les détails ici).
Si vous stockez dans vos structures internes des pages que l'utilisateur a visité dernièrement, il est facile de déterminer une page visitée deux fois, de navigation ou d'aller dans le "mauvais" sens.
Vous pouvez facilement généraliser (et rendre la chose plus robuste, par exemple à l'encontre des utilisateurs de sauter sauvagement entre les url, ou datant de plus d'un pas à la fois) par la construction d'un graphe de "permis" de navigation et de le traverser alors que l'utilisateur visite des sites web.
Le comportement correct, puis si l'utilisateur est en train de faire une "mauvaise" navigation (comme prendre du recul, de rechargement == visite deux fois) est de le faire revenir sur la bonne voie. Ne pas donner un message d'erreur qu'il ne peut pas s'échapper! Comme il n'est pas permis de recharger ou de revenir en arrière, il n'a pas d'options à gauche.
Vous ne pouvez pas. Le navigateur n'envoie pas ses propres événements de l'interface utilisateur pour le serveur. Tout ce que vous obtenez sont les requêtes http et un ca ressemble assez à un autre. Peut-être que les cliqué sur le bouton de retour ou peut-être ils ont juste retapé la dernière url. Dites-nous quels sont les problèmes qu'elle provoque et nous pouvons vous aider à adapter votre projet à travailler avec le protocole http est un peu mieux.
Mettre en œuvre un PageToken à l'aide d'un guid/ou timestamp stocké dans la session et de comparer la valeur d'un champ caché dans le formulaire. Je l'ai fait par l'intermédiaire d'un PageToken Classe. Si la valeur du champ caché et la variable de session ne correspondent pas, alors vous êtes hors de la synchronisation et de la vous gérer cela. Le truc, c'est de cartographier tous les événements sur votre page.
Dans votre méthode d'Événements avant votre code:
Je présume que vous voulez faire cela à cause de l'après-back afin d'éviter de soumettre à nouveau un peu d'action, de données ou de droite? ironiquement, ce n'était pas aussi grand d'un problème de dos avant asp.net webforms ... parce que vous avaient généralement à la poste à une adresse différente, au lieu de le même (un peu comme asp.net mvc en fait).
Un truc que j'ai aimé ... même si dans la plupart des techniques de points est plus lent ... était d'avoir une page d'entrée, et une page de post. La sortie HTML de la page de post était un super minime HTML avec un petit javascript qui a remplacé l'url courante (du post de la page) dans l'historique du navigateur avec la page de résultat (ou même l'original de la page de renvoi si vous le voulez bien). Le résultat était quand l'utilisateur, cliquez sur le bouton de retour, il serait envoyé à l'entrée d'origine de la page, ou s'il a cliqué sur l'actualisation, il faudrait déjà être sur la nouvelle page de résultat.
Nous l'avons fait en Java/Struts1 en mettant une propriété sur le bouton soumettre. Si le bouton soumettre a cliqué sur le bouton texte sera envoyé à la propriété dans la ActionForm. Si l'utilisateur actualisé les informations dont la valeur n'est pas définie, donc nous savions que l'utilisateur n'a pas cliqué sur le bouton. Dans ce cas où la propriété était vide, nous sommes allés en arrière, et rendus à la première page de la pageflow. YMMV dans ASP.Net.
Avec
Site.Master
Dans votre
Site.Master
après<body>
Sans
Site.Master
Dans votre code commun, après
<body>
.NET 3.5 peut très bien gérer le navigateur en arrière (et avant) les boutons. Rechercher avec Google: "Scriptmanager EnableHistory".
Vous pouvez contrôler les actions de l'utilisateur va ajouter une entrée dans l'historique du navigateur (ScriptManager -> AddHistoryPoint) et votre ASP.NET l'application reçoit un événement à chaque fois que l'utilisateur clique sur le navigateur boutons suivant/précédent.