Salve, salve comunidade!
Acompanhe comigo a seguinte situação: Você está desenvolvendo um sistema web que abre uma janela em algum momento e não deseja que o usuário, ao clicar novamente no botão, recarregue aquela janela aberta.
Então, com o seguinte código podemos criar esta situação onde caso usuário clique novamente no link que abre a janela, o sistema não irá permitir que ela seja re-aberta. Evitando assim consumo excessivo de tráfego.
Tomei a liberdade de comentar os pontos principais do código, espero que entendam:
<script language="javascript" type="text/javascript">
var janela = null;
function AbreJanela()
{
// verifica se a janela está aberta
if(janela != null && !janela.closed)
{
// caso esteja aberta, mostra um aviso
alert('A janela já está aberta');
}
else if(janela != null && janela.closed)
{
// se a janela foi fechada, limpo a variavel janela para permitir que ela seja re-aberta
alert('A janela foi fechada e agora poderá ser aberta');
janela = null;
}
// só abre a janela se a variavel 'janela' é nula
if(janela == null)
{
janela = window.open("http://www.codigofonte.net", "janela", "top=10, left=10");
}
}
</script>
Veja que neste código há uma outra condição
if(janela != null && janela.closed) que faz um teste e verifica se a janela foi aberta mas o usuário a fechou. Se não colocarmos este trecho de código, o sistema nunca mais (até que a página seja recarregada) irá permitir que a janela seja aberta e este não é o nosso caso, não é?
Pronto. Agora você poderão fazer testes quando utiliza popups em seu site.
Até a próxima.