View Full Version : evento onclose
in_pakto 10-02-2006, 14:42 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
Se te percebi bem, podes fazê-lo em JavaScript usando o evento onunload (http://www.w3schools.com/jsref/jsref_onunload.asp).
in_pakto 14-02-2006, 21:35 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','','toolba r=no,location=no,status=no,menubar=no,scrollbars=n o,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:
<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.
in_pakto 15-02-2006, 16:24 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 ,)
in_pakto 15-02-2006, 22:40 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...
apimenta 30-06-2006, 20:54 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.
|
|