Seguinte, queria saber como posso impedir que o usuário, em uma aplicação web, volte uma página usando o botão voltar do browser ou clicando com o botão direito e em voltar ou passando comandos javascript pela barra de endereços.
Sendo assim, eu queria forçar a utilização dos botões na página para a navegação.
Alguém sabe como faço isso??
To postando aqui pois não sei nem como procurar isso no google!!
Eu não quero desativat o botão do browser (e acho q nem tem como). Acho que me expressei mal!
Eu gostaria de que, quando o usuário clicar no botão voltar ou clicar com o botão direito e depois clicar em voltar ou digitar um javascript na barra de endereço para retornar à pagina anterior, minha aplicação não deixaria isso acontecer, ou seja, exibiria a mesma página (página atual) ou nem mudaria nada!!
Isso eu vou utilizar para forçar o usuário a utilizar apenas os botões que eu coloquei na página.
Eu já vi isso em alguns sites de bancos.
Eu acho q tenho uma solução meia boca, mas acho q vai rolar?
Inicialmente, se alguém dizer que é uma solução porca eu vou concordar…hehe, mas pra quem está cagado, oq é um pendo…hehe.
Vamos lá.
Faz assim:
1-)
Cria um hidden logo no topo da página, mantém o value dele vazio.
Bom, qndo o usuário clicar no botão, vc preenche o hidden com qlquer coisa e manda esse obj via post.
2-)
Bom, vc vai concordar que quando esse obj for pra outra página ele vai estar carregado certo?, blz, dai quem vem a porcalhada…rs.
3-)
Clicando no botão do browser pra voltar, vc não concorda que esse obj vai estar carregado!!!, ai que entra a validação.
No body, vc coloca um javascript no evento onLoad e verifica se tem alguma coisa nesse hidden.
Se ele estiver com o resultado igual ao q vc passou pra outra página, é pq ele clicou no botão do browser, dai vc dá um dispatcher ou redirect…sei lá…rs.
Se estiver vazio ou com outro valor, é q ele usou o botão da sua aplicação…
4-)Fim.
Eu penso q isso vai dar um trampo do caçete, mas pode te ajudar…rs.
A regra mais básica para web developers é: o browser não é seu!
Se você quer desabilitar o botão de voltar, você não entende isso, e muito provavelmente vai incomodar o usuário.
Mas, de qualquer jeito, você pode usar o método forward() fazendo algumas gambiarras.
[quote=mcbarsotti]o internet banking do unibanco tem isso, ve se você consegue alguem que tenha conta lá e pede para acessar, só chupinhar o .js!
abs.[/quote]
Cara, aqueles JSs são violentos demais! Não da pra entender aquilo não. Hehehe!
Mas era bem isso mesmo que eu tava querendo, exatamente como o internet banking do unibanco!
Cara, não vai rolar usar gambi aqui. É um projeto comercial!
Ainda estou procurando, mas nada ainda!!
Se alguém mais tiver alguma idéia!
Através de um PhaseListener eu expiro as páginas conforme eu caminho pela aplicação!!!
public void beforePhase(PhaseEvent event) {
FacesContext facesContext = event.getFacesContext();
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
response.addHeader("Pragma", "no-cache");
response.addHeader("Cache-Control", "no-cache");
response.addHeader("Cache-Control", "must-revalidate");
response.addHeader("Expires", "Mon, 8 Aug 2006 10:00:00 GMT"); // some date in the past
}
Isso da certo no IE mas no Firefox não da certo!!
Ainda não tá legal!! Se alguém tiver uma solução melhor…ajuda muito!!