Acompanhe quando o usuário clica no botão Voltar no navegador
-
09-06-2019 - |
Pergunta
É possível detectar quando o usuário clica no botão Voltar do navegador?
Eu tenho um aplicativo Ajax e se conseguir detectar quando o usuário clica no botão Voltar posso exibir os dados apropriados de volta
Qualquer solução usando PHP, JavaScript é preferível.Inferno, uma solução em qualquer linguagem é boa, só preciso de algo que eu possa traduzir para PHP/JavaScript
Editar:Recorte e cole abaixo:
Uau, todas as respostas excelentes.Gostaria de usar o Yahoo, mas já uso as bibliotecas Prototype e Scriptaculous e não quero adicionar mais bibliotecas ajax.Mas ele usa iFrames o que me dá uma boa indicação para escrever meu próprio código.
Solução
Existem várias maneiras de fazer isso, embora algumas funcionem apenas em determinados navegadores.Uma que eu sei de cara é incorporar um pequeno iframe quase invisível na página.Quando o usuário clica no botão Voltar, o iframe é navegado de volta, onde você pode detectar e atualizar sua página. Aqui é outra solução.
Você também pode visualizar a fonte em algo como o Gmail e ver como eles fazem isso.
Aqui está a propósito, uma biblioteca para o tipo de coisa que você procura
Outras dicas
Uma das minhas estruturas favoritas para fazer isso é Gerenciador de histórico do navegador do Yahoo!.Você registra eventos e ele liga de volta quando o usuário retorna a esse estado.E se você quiser saber como funciona, aqui está uma entrada divertida no blog sobre as decisões do Yahoo!feito ao projetá-lo.
Não há como saber quando um usuário clica no botão Voltar ou pressiona a tecla Backspace para voltar no navegador; no entanto, há outros eventos que acontecem em uma determinada ordem que são detectáveis.Esse exemplo javascript tem um método razoavelmente bom para detectar comandos de retorno:
A maneira tradicional, entretanto, é rastrear o movimento do usuário em seu site usando cookies ou páginas de referência.Quando o usuário vai para a página A, depois para a página B e aparece na página A novamente (especialmente quando não há link de B para A), você sabe que ele voltou - A pode detectar isso e redirecioná-lo ou não.
A biblioteca de interface do usuário do Yahoo, minha biblioteca JS favorita do lado do cliente, tem um excelente Gerenciador de histórico do navegador isso faz exatamente o que você está pedindo.
A maneira mais simples de verificar se você voltou para uma versão em cache da sua página, que precisa ser atualizada, é adicionar um elemento de entrada oculto que será armazenado em cache e você pode verificar se ele ainda tem seu valor padrão.
Basta colocar o seguinte dentro de sua tag corporal.Coloco o meu logo antes da etiqueta final.
<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>
Eu configurei uma variável $wasPosted
em $_SESSION
com valor false
.
Todas as minhas postagens passam pelo mesmo arquivo php e definem $wasPosted
para true
.
Todos header(location:)
as solicitações são precedidas pela configuração $wasPosted
para true
.
Se $wasPosted
é false
então a página foi carregada após o uso dos botões de retroceder ou avançar.
O kit de ferramentas dojo possui funcionalidade para lidar com isso em javascript.Não acho que exista uma boa maneira de lidar com isso em PHP puro.
Aqui está a página de documentos que eles têm: http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/back-button-undo