Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
bom dia ae galera..
bem estou com um certo problema :D
tenho um sistema que grava as ações dos usuários, um log pra ser mais exato.
pos bem.
quando o usuário sair ele precisa gravar um log. até ae beleza. so que quando ele clica no X do navegador.. direto não grava o log.
então oq ue fiz.
criei uma chamada ajax basicona apenas pra chamar a pagina que vai gravar o log.
bem o problema ta ae.
esse sistema que tenho é com frames.
ja tentei colocar dentro de <noframes></noframes>
um body onunload ou onbeforeunload
para chamar a função.
que nao chama nada.
e continua sem gravar.
bem fiz os testes indo direto na pagina ele grava e criando outra pagina o ajax funciona.
o codigo ajax segue abaixo.
alguem teria alguma ideia pra funcionar isso com frames
function gravaLog(chaveUser)
{
alert("Você está saindo do sistema");
ajax=GetXmlHttpObject()
if (ajax==null)
{
alert ("Browser does not support HTTP Request")
return
}
var url = "conn/logCloseWindow.asp";
url = url+"?idUserLog="+chaveUser;
ajax.onreadystatechange=stateChanged
ajax.open("GET",url,true)
ajax.send(null)
}
function stateChanged()if (ajax.readyState==4 || ajax.readyState=="complete")
{
alert('Saiu com sucesso');
} document.getElementById("resposta").innerHTML = "Aguarde";
}
}
function GetXmlHttpObject() ajax=new XMLHttpRequest();
} ajax=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
ajax=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return ajax;
}mestre o problema nao ta no ajax..
e sim nos frames..
quero saber que com ajax tem como resolver. isso.
entendeu ?
Bruno,
Não sei em qual plataforma você esta trabalhando, mesmo assim, se estivesse no seu lugar usaria um evento de aplicação (onSessionEnd do dot net por exemplo) para gravar esta informação, se não der para ser assim, sinceramente não saberia como te ajudar.
o sistema é em asp antigo..
não sei se possui essa opção que existe no dot net.
e da mesma forma não sei como isso me ajudaria para gravar o log..
meu problema é so em gravar o logo dos usuário quando clicarem no fechar do navegador..
pq preciso controlar isso.
se alguem tiver alguma ideia.
que posssa resolver o meu problema agradeço ^^
Existe um arquivo global.asa escrito em asp onde você pode declarar estas funções que o klaygomes mencionou.
Não é apenas para .Net. É um arquivo opcional que fica na raiz de sua aplicação.
É a melhor maneira de você fazer isto, pois se o usuário matar o processo do browser também, você não conseguirá o log. É melhor controlar isto no servidor do que no cliente, pois pelo cliente, você possibilita até que o usuário simule que saiu do sistema(gere o log) sem ter saído.
Então é só declarar o método onSessionEnd no global.asa, e a partir daí gravar o log do usuário.
Dica:
[i]ajax.open("GET",url,true) [/i]<--Bota um false aqui.
[i]ajax.send(null)[/i]