2010-01-05 483 views
14

Cuando el usuario va a history-back-1 ... ¿cómo lo detecto? Y luego, alerta "¡el usuario hizo clic atrás!"Cómo detectar si el usuario hizo clic en el botón "Atrás"

Usando une (y preferentemente jQuery)

+3

Alex, sólo hizo una pregunta similar en http://stackoverflow.com/questions/2008765/in-javascript-pervious-jquery-how-do-i-add-something-to-the-url-when-the-user No spam. –

Respuesta

20

Por lo general, no se puede (restricción de seguridad del navegador). Puedes saber si el usuario navega fuera de la página (antes de la descarga, al momento del disparo) pero no puedes decir a dónde fueron a menos que hayas configurado tu página para permitirlo.

HTML5 presenta la API de historial de HTML5; en navegadores conformes, el evento onpopstate se activará si el usuario vuelve a una "página" anterior en su sitio.

+0

¿Qué tal esto? http://stackoverflow.com/questions/10462511/is-there-a-way-using-jquery-to-detect-the-back-button-being-pressed-cross-browse –

+1

Puede construir páginas de tal manera ese retroceso es detectable, pero la única manera en que puede saber a dónde fueron es si pasaron a otra página de su sitio (donde controla el JavaScript). ¿Cómo construir tal escenario? Cuando el usuario visita "PageA.htm", inmediatamente los envía a "PageB.htm" y si vuelven a cargar "PageA.htm", puede "adivinar" que han pulsado "Atrás". – EricLaw

6

intento:

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 también se activará si el usuario va a otro sitio. – EricLaw

+0

¿hay alguna forma de no mostrar el mensaje de alerta? –

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

Esto no se activará si visita ** otra ** página y luego regresa a esta página. – Pacerier

-2

En la página que está viendo, puede agregar a este trozo de código al evento onLoad a mover de nuevo la página estaban.

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

Si desea que la alerta luego hacer que

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

No funcionará para sitios web de una sola página. – ShrekOverflow

+0

No funcionará para nada. 'history.length> 0' le dará verdadero incluso cuando es una página completamente nueva. Le brinda la [longitud completa de la historia] (http://stackoverflow.com/a/9757655/632951) ** incluyendo ** las páginas hacia atrás y hacia adelante. – Pacerier

0

A continuación se presentan las medidas para detectar botón de retroceso clic

  1. El registro de un evento MouseDown en el cuerpo $('body').on('mousedown' ,'on all li');

    2. Ahora establezca una variable cuando ocurra un evento de mousedown.

    3.Compruebe esta variable cuando su ubicación cambie.

SI chages variables a true significa lo contrario lista cliked BackButton

Este trabajo en mi caso de uso .Esta solución puede ayuda a los demás, ya que depende del diseño de aplicaciones

Cuestiones relacionadas