2010-01-05 8 views
14

Lorsque l'utilisateur revient à l'historique 1, comment puis-je le détecter? Et puis, alerter "l'utilisateur a cliqué en arrière!"Comment détecter si l'utilisateur a cliqué sur le bouton "retour"

En utilisant binds (et de préférence jquery)

+3

Alex, vous venez de poser une question similaire http://stackoverflow.com/questions/2008765/in-javascript-perferably-jquery-how-do-i-add-something-to-the-url-when-the-user Ne pas spammer. –

Répondre

20

Vous pouvez généralement pas (restriction de sécurité du navigateur). Vous pouvez dire si l'utilisateur navigue loin de la page (onbeforeunload, onunload fire) mais vous ne pouvez pas dire où ils sont allés, sauf si vous avez configuré votre page pour l'autoriser.

HTML5 introduit l'API d'historique HTML5; Dans les navigateurs conformes, l'événement onpopstate se déclenche si l'utilisateur revient à une page antérieure sur votre site.

+0

Que pensez-vous de cela? http://stackoverflow.com/questions/10462511/is-there-a-way-using-jquery-to-detect-the-back-button-being-pressed-cross-browse –

+1

Vous pouvez construire des pages de cette façon ce retour est détectable, mais la seule façon de savoir où ils se sont rendus est de savoir s'il leur est arrivé de naviguer vers une autre page de votre site (où vous contrôlez le JavaScript). Comment construire un tel scénario? Lorsque l'utilisateur visite "PageA.htm", vous les envoyez immédiatement à "PageB.htm" et s'il charge à nouveau "PageA.htm", vous pouvez "deviner" qu'il a cliqué sur "Retour". – EricLaw

6

essayer:

window.onbeforeunload = function (evt) { 
    var message = 'Are you sure you want to leave?'; 
    if (typeof evt == 'undefined') { 
    evt = window.event; 
    } 
    if (evt) { 
    evt.returnValue = message; 
    } 
    return message; 
} 
+0

OnBeforeUnload se déclenchera également si l'utilisateur accède à un autre site. – EricLaw

+0

est-il possible de ne pas afficher le message d'alerte? –

2
window.onpopstate=function() 
{ 
    alert("Back/Forward clicked!"); 
} 
+5

Cela ne se déclenchera pas si vous visitez ** une autre ** page, puis revenez à cette page. – Pacerier

-2

Sur la page que vous regardez, vous pouvez ajouter ce morceau de code à l'événement onLoad pour les retourner la page qu'ils étaient.

if(history.length>0)history.go(+1) 

Si vous voulez que l'alerte puis faire

if(history.length>0)alert("the user clicked back!") 
+0

Ne fonctionne pas pour les sites Web d'une seule page. – ShrekOverflow

+0

Ne fonctionne pas pour n'importe quoi. 'history.length> 0' vous donnera vrai, même si c'est une toute nouvelle page. Il vous donne la [longueur totale de l'histoire] (http://stackoverflow.com/a/9757655/632951) ** y compris ** les pages en avant et en arrière. – Pacerier

0

Voici les étapes pour détecter retour cliquez sur le bouton

  1. Inscrivez-vous une souris vers le bas événement sur le corps $('body').on('mousedown' ,'on all li');

    2. Maintenant, définissez une variable lorsque l'événement mousedown se produit.

    3.Vérifiez cette variable lorsque votre emplacement change.

IF Chages variables true cela signifie la liste cliquée autrement backbutton

Ce travail dans mon usecase .Cette solution peut aide les autres, car il dépend de la conception de l'application

Questions connexes