evento onclose

in_pakto

Power Member
boas..
mais uma vez vinha aqui pedir vos uma orientaçao para uns projectos web que tenho a desenvolver

precisava de um qualquer codigo que à semelhança do onclose em VB e delphy me permita executar algumas operações quando o utilizador encerra a pagina

uma alternativa a isto seria retirar os botões de controle (minimizar, maximizar, fechar) da janela.. e construir uns no proprio site usando javascript, assim o site teria de ser inicializado em modo de ecra inteiro

agradecço, desde ja, qualquer ajuda


de resto... fica o meu email disponivel para que possam entrar em contacto
 
onunload

bem... estive a investigar o evento e o que encontrei foi o seguinte

<script language="JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
window.open(theURL,winName,features);
}
//-->
</script>

<script>
onUnload="MM_openBrWindow('index.php?page=logout','','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=,height=')"
</script>

estive a experimentar e nao funciona.. a declaraçao da funçao faz se no incio.. ja tentei por o codigo onUnload no incio, no body e no fim, e nao funciona.. eu preciso chamar a pagina logout para executar o codigo.. como o faço?


help?
 
Não te vou questionar quanto à função e seus parâmetros.
Quanto a pôr isso a funcionar, tenta:
Código:
<html>
	<head>
		<title>...</title>
		<script type="text/javascript">
			<!--
				function MM_openBrWindow(theURL,winName,features) {
					window.open(theURL,winName,features);
				}
			-->
		</script>
	</head>
	<body onunload="MM_openBrWindow('index.php?page=logout', '', 'toolbar=no,location=no,status=no,menubar=no,sc rollbars=no,resizable=no,width=,height=')">
		...
	</body>
</html>

EDIT: Testei agora e esse evento não parece funcionar no Opera 8.51 nem no Opera 9 Preview 2, mas funciona no Internet Explorer 6 SP2 e também deve funcionar no Internet Explorer 7, no Firefox e no Netscape.
 
Última edição:
bem.. continuo com problemas... testei o codigo em internet explorer 6,7, mozilla e maxthon

nao ha mensagens de erro.. simplesmente.. nao acontece nada...

nao percebo muito disso.. mas o código
<body onunload="MM_openBrWindow...
nao devia ter uma indicaçao que se trata de javascript? afinal é em javascript que está o procedimento
 
in_pakto:

Não me leves a mal, mas dá uma voltinha pelos foruns do FF. Tens lá muita coisa sobre isso.

A explicação rápida é que esse sitio e função particularmente, eram amigas dos popups. E teres a função a chamar um window.open() é mesmo tar a pedir ,) Esp. pq queres uma janela sem nada, botões, navbar, borders, the works. Mesmo popup lame style... E sendo o onunload, o browser sabe que tás de saida do site, provavelmente nem se dá ao trabalho de dizer seja o que for...

No meu não dizia de certeza ,)
 
shadex obrigado pela dica... realmente estive a testar e cheguei à mesma conclusao..
entretanto se souberes alguma outra maneira de fazer isto.. estou aberto a sugestoes, de qualquer maneira o onclose foi so uma ideia que tinha vindo de outras linguagens em que trabalhei
 
O melhor que te posso oferecer é:

1) Refresh. Usas Javascript. Metes um timeout de tamanho razoável. A cada evento que tenha interacção, resetas o timeout para o primeiro valor. Se o user demorar mais do que x tempo na página, o JS chama uma página que faz o logout. Se o user tava a dormir, azar o dele, faz login de novo.

2) Session timeouts + uma DB de users que não sairam "clean". Se a session fizer timeout pq o user tava sem fazer nada, ao entrar de novo vais para ao pré-login. Se na DB o user estiver marcado como "unclean", executas primeiro o código de logout "unclean" pra fazer tarefas de "limpeza" e em seguida mandas o bixo pro login a sério

3) Metes um botão de Logout bem grande. De cada vez ue o user ficar "unclean" por ser preguiçoso, faz o gajo ter de ler n (com n aleatório e >1) páginas de explicações de pq é que tem de fazer logout :D

4) Metes um disclaimer bonito na página de login a explicar que ao não fazerem logout as credenciais deles podem ser usados por outros e que ninguem se responsabiliza se isso acontecer. A segurança de cada um é responsabilidade de cada um, e tá mais que na altura de o ppl aprender isso da pior maneira...
 
Olá amigo,

Seguinte, você está abrindo está janela a partir de outra? Se sim, encontrei uma solução.

1. Na página que abriu está (origem ou opener) acrescente o seguinte javascript:
function closeWebcastSession()
{
window.open('index.php?page=logout', '_blank', 'toolbar=no,location=no,status=no,menubar=no,sc rollbars=no,resizable=no,width=,height=');
}

2. Agora apenas inclua o código na página que está sendo fechada:
<script for=window event=onunload>
if(self.VBArray)
{
var e = self.event, s = self.screen;
if(e.clientX + s.width < 0 && e.clientY + s.height < 0)
{
opener.closeWebcastSession();
}
}
</script>


Isso deve resolver seu problema...
 
Era bem, mas padece do mesmo problema de antes. A questão dele não era o unload event, era o window.open. O teu código continua a não funcionar pq os browsers e pop up blockers não permitem pura e simplesmente a abertura de janelas sem interação do utilizador directa, ie, click.
 
Back
Topo