Desativar "voltar página" em browser

9 respostas
rafdutra

Boa tarde galera.

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!!

Obrigado!

9 Respostas

H

Boa Tarde.

Bom… pelo que eu saiba não tem como fazer isso no browser em si.

O que você teria que fazer é a sua aplicação abrir em uma popup.
Aí sim na abertura da popup você tem como retirar os botões, barra de url, etc…

http://www.w3schools.com/htmldom/met_win_open.asp

Valeu

rafdutra

Boa tarde haamilton.

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.

Alguém sabe como???

H

Dá uma olhada nessa URL…

http://www.google.com.br/#hl=pt-BR&source=hp&q=block+back+button+browser&btnG=Pesquisa+Google&meta=&aq=f&oq=block+back+button+browser&fp=211f9b3bfb78d2c3

Acredito que tenha algo que te ajude.

Abraço!

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.

Lenin666

E ae karinha…, certinho?!

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 porcalhadars.

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  um dispatcher ou redirectsei 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.

Abs();

B

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.

rafdutra

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.

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! :frowning:

Ainda estou procurando, mas nada ainda!!
Se alguém mais tiver alguma idéia!

rafdutra

Achei um esquema que é o seguinte:

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!!

rafdutra

Ninguém tem uma outra solução??

Criado 9 de setembro de 2009
Ultima resposta 10 de set. de 2009
Respostas 9
Participantes 5