Como desativar o botão VOLTAR do navegador (entre os navegadores)?
asp.net
javascript
priyanka.sarkar
fonte
fonte
Respostas:
Esta questão é muito semelhante a este um ...
Você precisa forçar a expiração do cache para que isso funcione. Coloque o código a seguir no código da sua página.
fonte
Não desative o comportamento esperado do navegador.
Faça suas páginas lidar com a possibilidade de os usuários voltarem uma ou duas páginas; não tente prejudicar seu software.
fonte
Eu vim com um pequeno hack que desativa o botão Voltar usando JavaScript. Eu verifiquei no Chrome 10, Firefox 3.6 e IE9:
O que isso está fazendo?
Dos comentários:
Este script aproveita o fato de que os navegadores consideram tudo o que vem depois do sinal "#" no URL como parte do histórico de navegação. O que faz é o seguinte: quando a página carrega, "# 1" é adicionado ao URL. Após 50ms, o "1" é removido. Quando o usuário clica em "voltar", o navegador muda a URL de volta para o que era antes de o "1" ser removido, MAS - é a mesma página da web, então o navegador não precisa recarregar a página. - Yossi Shasho
fonte
Outros adotaram a abordagem de dizer "não faça isso", mas isso não responde realmente à pergunta do autor da postagem. Vamos supor que todos saibam que é uma má ideia, mas estamos curiosos para saber como isso é feito ...
Você não pode desabilitar o botão Voltar no navegador de um usuário, mas pode fazer com que seu aplicativo seja interrompido (exibe uma mensagem de erro, exigindo que o usuário reinicie) se o usuário voltar.
Uma abordagem que vi para fazer isso é passar um token em cada URL dentro do aplicativo e em cada formulário. O token é gerado novamente em cada página e, assim que o usuário carrega uma nova página, todos os tokens das páginas anteriores são invalidados.
Quando o usuário carrega uma página, a página só será exibida se o token correto (que foi fornecido para todos os links / formulários na página anterior) foi passado para ela.
O aplicativo de banco on-line que meu banco oferece é assim. Se você usar o botão Voltar, nenhum link funcionará e nenhum recarregamento de página poderá ser feito - em vez disso, você verá um aviso informando que não é possível voltar atrás e é necessário reiniciar.
fonte
Embora eu mesmo esteja procurando pela resposta, "Melhores práticas" está ... desatualizado ... Assim como os navegadores estão. (Na verdade, navegadores são fósseis feios)
A solução melhor / mais segura seria que os navegadores implementassem um método / solicitação em que o usuário pudesse conceder à página a capacidade de controlar a interface.
Por quê? Porque para o meu projeto atual estou construindo uma interface 100% JavaScript construída e controlada. E o botão Voltar não tem lugar no meu projeto, pois não há mudança de página. (Ou seja, muito rápido e sem flashes de página por causa de uma atualização .. Assim como um aplicativo real!)
Eu sei por que a capacidade de "roubar" a interface não está lá, e eu entendo. Mas, pelo menos, devemos ter a capacidade de solicitá-lo do navegador! Isso seria realmente a "melhor prática" sem os perigos do roubo.
Mas os navegadores são navegadores ... Não espero que nada de interessante aconteça a esse respeito.
fonte
Eu estava procurando a mesma pergunta e encontrei o seguinte código em um site. Pensei em compartilhá-lo aqui:
No entanto, conforme observado pelos usuários acima, esta nunca é uma boa prática e deve ser evitada por todos os motivos.
fonte
Se você confiar na tecnologia do cliente, ela pode ser contornada. Javascript pode ser desativado, por exemplo. Ou o usuário pode executar um script JS para contornar suas restrições.
Meu palpite é que você só pode fazer isso rastreando a sessão do usuário do lado do servidor e redirecionando (como em Server.Transfer, não em Response.Redirect) o usuário / navegador para a página necessária.
fonte
fonte
Houve algumas implementações diferentes. Existe uma solução flash e algumas soluções iframe / frame para o IE. Veja isso
http://www.contentwithstyle.co.uk/content/fixing-the-back-button-and-enabling-bookmarking-for-ajax-apps
BTW: Existem muitos motivos válidos para desativar (ou pelo menos evitar 1 etapa) um botão Voltar - veja o gmail como um exemplo que implementa a solução hash discutida no artigo acima.
Pesquise no Google "como o Ajax quebrou o botão Voltar" e você encontrará muitos artigos sobre testes de usuários e a validade de desativar o botão Voltar.
fonte
Eu também tive o mesmo problema, use essa função de script Java na tag head ou no, está 100% funcionando bem, não deixava você voltar.
fonte
Experimente este código. Funcionou para mim. Basicamente, ele muda o hash assim que a página é carregada, o que muda a página de histórico recente adicionando "1" no URL. Então, quando você clica no botão Voltar, ele redireciona para a mesma página todas as vezes.
fonte
Você deve usar postagens com vencimentos adequados e cabeçalhos de cache.
fonte
Em vez de tentar desativar o botão Voltar do navegador, é melhor suportá-lo. .NET 3.5 pode muito bem lidar com os botões voltar (e avançar) do navegador. Pesquise no Google: "Scriptmanager EnableHistory". Você pode controlar quais ações do usuário adicionarão uma entrada ao histórico do navegador (ScriptManager -> AddHistoryPoint) e seu aplicativo ASP.NET receberá um evento sempre que o usuário clicar nos botões Voltar / Avançar do navegador. Isso funcionará para todos os navegadores conhecidos
fonte
Globalmente, desativar o botão Voltar é de fato uma prática ruim. Mas, em certas situações, a funcionalidade do botão Voltar não faz sentido.
Esta é uma maneira de evitar a navegação indesejada entre as páginas:
Página inicial (arquivo
top.php
):Página secundária (arquivo
secondary.php
):O efeito é permitir navegar da página superior para a frente para a página secundária e voltar (por exemplo, Cancelar) usando seus próprios links. Porém, após retornar à página inicial, o botão Voltar do navegador é impedido de navegar para a página secundária.
fonte
Até eu já enfrentei a mesma situação antes ... e não tive nenhuma ajuda. tente essas coisas talvez funcionem para você
na
<head>
tag da página de login :no botão Logout eu fiz isso:
e na página de login coloquei o foco na caixa de texto Nome de usuário como esta:
Espero que isso ajude ... :) Alguém por favor me ensine como editar esta página ...
fonte
SE você precisar suprimir suavemente as teclas delete e backspace em seu aplicativo Web, de modo que quando eles estiverem editando / excluindo itens a página não seja redirecionada inesperadamente, você pode usar este código:
fonte
Experimente este código. Você só precisa implementar este código na página mestra e ele funcionará para você em todas as páginas
fonte
O problema com Yossi Shasho Code 's é que a página está rolando para o topo a cada 50 ms. Então, eu modifiquei esse código. Agora está funcionando bem em todos os navegadores modernos, IE8 e superior
fonte
Isso parece ter funcionado para nós.
fonte
fonte