Alguns sites, como o StackExchange, exibem a mensagem "Tem certeza de que deseja sair desta página?" caixa de diálogo ao tentar sair em determinadas condições, como se você tiver uma postagem que ainda não terminou de editar. Isso é útil!
Infelizmente, sites mal-intencionados ou infectados gostam de usar a mesma funcionalidade para dizer: "Ei! Você não instalou nosso antivírus de malware para solucionar os 111 vírus que definitivamente não estamos mentindo sobre encontrar no seu computador!" E o "Deixe isto as opções da página "e" Fique nesta página "são substituídas por algo como" Esteja seguro. Instale nosso produto "e" Dê um tiro no pé ". Isso é inútil!
Javascript pode fazer algumas coisas desagradáveis. Quando recebo uma dessas caixas de diálogo tentando me impedir de sair de um site claramente malicioso, qual deve ser minha resposta? É seguro clicar em "Sair desta página" ou com o que eles substituíram o texto? Um site poderia alterar o comportamento do botão ou interceptar minha tentativa de navegar para fora e desenhar sua própria caixa de diálogo falsa que faz o que um invasor deseja quando clico nele?
Respostas:
Apesar do que dizem alguns desses diálogos, eles não podem fazer nada malicioso . Você sempre pode clicar em OK ou em Sair da página para fechar a página ofensiva sem consequências.
Se a caixa de diálogo for muito longa e os botões estiverem fora da tela , você pode pressionarEnter para confirmar o fechamento da página.
Se você não possui um teclado (dispositivos com tela de toque), use o bookmarklet abaixo ou consulte a resposta do SimpleSimon (somente Chrome).
Agora, alguns detalhes.
Só há uma maneira de executar alguma ação quando uma página é fechada: através do
onbeforeunload
evento. É claro que isso poderia ser facilmente usado contra o usuário (por exemplo, quando ele tenta fechar uma página, abre sua cópia em uma nova janela), por isso é muito limitado.Na verdade, a única coisa razoável que você pode fazer é abrir uma caixa de diálogo com texto personalizado e dois botões, um para sair da página e outro para ficar. A única coisa que uma página pode fazer com essa caixa de diálogo é definir seu texto. Os botões e a barra de título são imutáveis. Aqui está uma captura de tela do Firefox 3.6: ( versão muito antiga do Firefox)
É claro que quando você permite que as pessoas mostrem pop-ups com qualquer texto e apenas os botões OK / Cancelar , você pode ter certeza de que mais cedo ou mais tarde alguns caras o usarão contra você.
Na captura de tela acima, OK significa apenas "Sair desta página", mas a descrição personalizada sugere algo mais. Portanto, os navegadores mudaram as caixas de diálogo, tornando mais difícil torná-las enganosas. Por exemplo, versões recentes do Firefox parecem ignorar o texto personalizado:
O Chrome mostra o texto personalizado, mas sempre anexa uma pergunta, perguntando ao usuário o que ele deseja fazer e os botões explicitamente explicam suas ações: (mas ainda é propenso às mensagens "vídeos de gatos"!)
Aqui está o Internet Explorer 10, também "propenso a gatos":
O Opera 12 simplesmente ignora o
onbeforeunload
evento e, se você tentar fechar uma guia assim, ela será fechada como qualquer outra. Eu não testei o Opera mais recente, no entanto.Então, para resumir as coisas mais importantes:
Você pode desativar o
onbeforeunload
evento, se desejar, impedindo efetivamente que as páginas solicitem sua saída ou permanência. Aqui está um script de usuário para vários navegadores . (role para baixo se o link estiver inoperante)Se você estiver em um site específico que mostra um pop-up malicioso e ainda tem medo de clicar em Deixar , crie um bookmarklet para removê-lo. Clique com o botão direito do mouse na barra de favoritos, escolha Novo favorito (ou equivalente) e cole-o como um URL: (é apenas um código reduzido no link acima)
Em seguida, basta clicar nesse marcador e o pop-up será temporariamente removido da página ativa.
Se você deseja testar a aparência desses pop-ups no navegador ou testar o bookmarklet / userscript, crie um arquivo de texto com o seguinte código e salve-o como um
.html
arquivo:Parece que o link userscript está morto no momento, então aqui está uma cópia extraída do cache archive.org . Todo o crédito para o criador do script original.
fonte
Na verdade, o FireFox tem uma solução bastante bacana (e fácil). Se você digitar
na barra de endereço e role para baixo até
e defina seu valor como True, você não verá mais os pop-ups Deixar página. No FireFox. Pena que não há uma solução semelhante no Chrome.
fonte
A solução mais simples no Chrome é travar a guia.
Digite chrome: // trava na barra de endereço e salve como marcador .
Da próxima vez que você quiser sair dessa página, basta clicar no marcador e ela eliminará a guia instantaneamente, sem afetar as outras guias. Não há necessidade de matar a sessão inteira do navegador, como alguns outros sugeriram.
Como alternativa, você pode travar a guia usando chrome: // travar e simplesmente fechar a guia sem que o JavaScript seja executado.
Não tenho certeza se isso é possível em outros navegadores.
fonte
Este é o evento window.onbeforeunload e um recurso do navegador da web. Portanto, esse deve ser um diálogo fixo do navegador da web. Você pode tentar em diferentes navegadores e, assim, pode ver, as caixas de diálogo têm diferentes designs.
Mas suponho que você possa desenvolver um pop-up com javascript, que se parece muito com o pop-up original do navegador. E se for um bom desenvolvedor, ele também verificaria o tipo de navegador antes de mostrar a caixa de diálogo. ;)
Para ter certeza de uma caixa de diálogo original, verifique paralelamente a caixa de diálogo correta, ou seja, aqui: http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/onbeforeunload.htm
Consulte aqui para obter mais informações sobre o evento:
https://developer.mozilla.org/en-US/docs/Web/API/window.onbeforeunload
http://msdn.microsoft.com/en-us/library/ms536907% 28VS.85% 29.aspx
fonte
Solução rápida se você não confiar no "pop-up" e em suas intenções / ações:
Para o Chrome:
Escape para remover pop-up
Clique com o botão direito na página
Selecione Inspecionar
Role para o topo
Clique com o botão direito na tag
Excluir nó
Aba fechada
Tenho certeza de que os outros navegadores têm opções semelhantes.
fonte