Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daniel Elidio

Detectando fechamento de Janela com ASP/JS

Recommended Posts

Olá, Bom dia,

 

Sou Novo aqui no Imasters, e atualmente trabalho em uma empresa que desenvolve sistemas Web em ASP.

 

Estávamos desenvolvendo um projeto, onde precisaríamos de detectar o fechamento da Janela do Navegador do Usuário, e executar um Update em uma tabela de um banco MYSQL.

 

Tentamos O evento OnUnload do Java Script para disparar uma página ASP que faria o processo, se não me engano também tentamos o Evento de sair do Global.asa, etc...

 

Gente... vocês sabem como eu posso fazer isso de Preferência em ASP?

 

Desde já agradeço a atenção de vocês!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O browser não mantém conexão com o servidor, por isso quando é fechado ele não dá nenhum "sinal" disso ao servidor.

 

Dai que esta solução precisa mesmo ser feita em Javascript. O javascript possui um evento windows_onunload,mas o evento onunload é rodado sempre que uma página sai do browser. Ou seja, se usuário trocar de página, dentro do seu site mesmo, o evento onunload vai rodar.

 

Então precisamos de uma forma de identificar que o evento esteja sendo rodado não porque o usuário saiu da página, mas porque fechou o browser. O truque é usar a posição de tela, veja :

 

<script language="javascript" type="text/javascript">

// <!CDATA[



function window_onunload() {
if (window.screenTop > 10000 && window.screenLeft > 10000)
{
window.open("logoff.aspx"); }
}
// ]]>

</script>

 

Veja que se descobrirmos que o usuário fechou o browser, abrimos (window.open) uma janela de logoff para avisar ao servidor que o browser foi fechado.

 

No body da página chamamos esta função :

 

<body onunload="return window_onunload()">

 

 

Pronto, com isso saberemos quando o usuário fechar o browser ! e aqui você verifica se a janela foi aberta e se foi fechada em JS

 

 

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

 

 

Referencia: http://www.bufaloinfo.com.br/dicas.aspx?cod=867

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.