1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

evento onclose

Discussão em 'Programação' iniciada por in_pakto, 10 de Fevereiro de 2006. (Respostas: 9; Visualizações: 2414)

  1. in_pakto

    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
     
  2. dam

    dam Power Member

    Se te percebi bem, podes fazê-lo em JavaScript usando o evento onunload.
     
  3. in_pakto

    in_pakto Power Member

    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?
     
  4. dam

    dam Power Member

    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: 14 de Fevereiro de 2006
  5. in_pakto

    in_pakto Power Member

    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
     
  6. ShadeX

    ShadeX Power Member

    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 ,)
     
  7. in_pakto

    in_pakto Power Member

    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
     
  8. ShadeX

    ShadeX Power Member

    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...
     
  9. 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...
     
  10. ShadeX

    ShadeX Power Member

    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.
     

Partilhar esta Página