Question

Est-il possible de détecter lorsque l'utilisateur clique sur le bouton de retour du navigateur?

J'ai une application Ajax et si je peux détecter lorsque l'utilisateur clique sur le bouton de retour, je peux afficher les données appropriées de retour

Toute solution à l'aide de PHP, JavaScript est préférable.L'enfer d'une solution dans n'importe quelle langue est très bien, juste besoin de quelque chose que je peux traduire en PHP/JavaScript

Edit:Couper et coller à partir de ci-dessous:

Wow, tous d'excellentes réponses.Je voudrais utiliser Yahoo mais j'utilise déjà Prototype et Scriptaculous bibliothèques et ne voulez pas ajouter plus d'ajax bibliothèques.Mais il utilise iFrames ce qui me donne un bon pointeur à écrire mon propre code.

Était-ce utile?

La solution

Il y a plusieurs façons de le faire, même si certains ne fonctionnent que dans certains navigateurs.Celui que je connais sur le dessus de ma tête est d'embarquer une minuscule quasi-invisible iframe sur la page.Lorsque l'utilisateur clique sur le bouton précédent de l'iframe est de naviguer dans le dos qui vous permet de détecter et mettre à jour votre page. Ici est une autre solution.

Vous pouvez également aller voir la source sur quelque chose comme gmail et de voir comment ils le font.

Voici une bibliothèque pour le genre de chose que vous êtes à la recherche par la voie

Autres conseils

L'un de mes préférés des cadres pour le faire, c'est Yahoo! Historique du Navigateur Manager.Vous vous inscrivez événements et il vous appelle en arrière lorsque l'utilisateur retourne à cet état.Et si vous voulez apprendre comment il fonctionne, voici un amusant entrée de blog sur les décisions Yahoo!fait lors de la conception il.

Il n'y a aucun moyen de savoir quand un utilisateur clique sur le bouton de retour de presses la touche retour arrière pour revenir en arrière dans le navigateur, mais il y a d'autres événements qui se produisent dans un certain ordre qui ne sont pas détectables.Cette exemple javascript a une assez bonne méthode pour détecter le retour des commandes:

De façon traditionnelle, cependant, est de suivre les mouvements de l'utilisateur par le biais de votre site à l'aide des cookies ou des référent de pages.Lorsque l'utilisateur accède à Une page, puis la page B, puis apparaît à la page Un de nouveau (surtout quand il n'y a pas de lien sur B à A) puis tu sais, ils ont Un peut le détecter et de les rediriger ou autrement.

Le Yahoo Bibliothèque d'Interface Utilisateur, mon favori personnel côté client bibliothèque JS, a une excellente Le Gestionnaire De L'Historique Du Navigateur que fait exactement ce que vous demandez.

La façon la plus simple pour vérifier si vous revenez à une version mise en cache de votre page, qui doit être actualisé, est d'ajouter une face cachée de l'élément d'entrée qui sera mis en cache, et vous pouvez vérifier si elle a encore sa valeur par défaut.

Il suffit de placer les éléments suivants à l'intérieur de votre balise body.Je place le mien juste avant la balise de fin.

<input type="hidden" id="needs-refresh" value="no">
<script>
    onload=function(){
        var e = document.getElementById("needs-refresh");
        if (e.value === "yes")
            location.reload();
        e.value = "yes";
    }
</script>

J'ai mis une variable $wasPosted dans $_SESSION avec la valeur false.

Tous mes messages passent par le même fichier php, et de définir $wasPosted pour true.

Tous header(location:) les demandes sont précédés par la mise en $wasPosted pour true.

Si $wasPosted est false ensuite, la page a été chargée après l'utilisation de l'arrière ou de l'avant boutons.

Le dojo toolkit dispose de fonctionnalités pour gérer cela à javascript.Je ne pense pas qu'il y est une bonne façon de le gérer en pur PHP.

Voici les docs page qu'ils ont: http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/back-button-undo

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top