Ir para conteúdo
Fórum Script Brasil
  • 0

Executar Arquivo Sem Abrir Popup


Guest Prompt

Pergunta

Galera,

Preciso executar comando numa página separada quando fechar a página, mas sem popup. Como posso fazer isso?

Meu código se resume em pagina onde o cliente está (teste.asp), e uma 2° pagina (funcoes.asp) que é onde rodam funções em asp para gravar no banco de dados (Acces) as informações de data e hora de entrada e de saída na página teste.asp.

Na página teste.asp tenho o include da funcoes.asp e mando executar a função normalmente que grava a hora de entrada na página, até ai tudo OK.

Da problema na hora de gravar a hora de saída pois, o onUnload não aceita executar .asp, somente javascript.

Então mandei no OnUnload da body um javascript que abre a pagina funcoes.asp passando um parametro na querystring.

<script>
function onUnload() {
window.open("funcao_trafego.asp?onload=ok","","left=0px;top=0px");
}
</script>

<body onUnload="return onUnload()">
[/codebox]

Deu certo, mas sabemos que Bloqueadores de Popups são muito comuns agora e não da pra eu confiar.

Como posso resolver isso??

Vamos la galera, me dêm essa força!

Abraços,

PROMPT

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Galera,

Preciso executar comando numa página separada quando fechar a página, mas sem popup. Como posso fazer isso?

Meu código se resume em pagina onde o cliente está (teste.asp), e uma 2° pagina (funcoes.asp) que é onde rodam funções em asp para gravar no banco de dados (Acces) as informações de data e hora de entrada e de saída na página teste.asp.

Na página teste.asp tenho o include da funcoes.asp e mando executar a função normalmente que grava a hora de entrada na página, até ai tudo OK.

Da problema na hora de gravar a hora de saída pois, o onUnload não aceita executar .asp, somente javascript.

Então mandei no OnUnload da body um javascript que abre a pagina funcoes.asp passando um parametro na querystring.

&lt;script>
function onUnload() {
window.open("funcao_trafego.asp?onload=ok","","left=0px;top=0px");
}
</script>

<body onUnload="return onUnload()">
[/codebox]

Deu certo, mas sabemos que Bloqueadores de Popups são muito comuns agora e não da pra eu confiar.

Como posso resolver isso??

Vamos la galera, me dêm essa força!

Abraços,

PROMPT

Acho que isso pode ajudar, esta tudo comentado.

[codebox]
<!-- chamamos o arquivo que vaoi fazer a função preenchelista funcionar. Essa função é padrão
Se você usar métodos ajax use essa função -->

<script>
// a funcao abaixo funciona em qualquer
// browser ou versão.
function createXMLHTTP()
{
var ajax;
try
{
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
try
{
ajax = new ActiveXObject("Msxml2.XMLHTTP");
alert(ajax);
}
catch(ex)
{
try
{
ajax = new XMLHttpRequest();
}
catch(exc)
{
alert("Esse browser não tem recursos para uso do Ajax");
ajax = null;
}
}
return ajax;
}


var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP",
"Microsoft.XMLHTTP"];
for (var i=0; i < arrSignatures.length; i++)
{
try
{
var oRequest = new ActiveXObject(arrSignatures[i]);
return oRequest;
}
catch (oError)
{
}
}

throw new Error("MSXML is not installed on your system.");
}
</script>
&lt;script type="text/javascript">
function chamaAsp()
{
document.location = "pagina.asp"
}
</script>

<input type="button" value="teste" onclick="chamaAsp()" />

<!-- aqui é o grande segredo. Essa função -->
&lt;script>
//função em ajax que vai buscar a página que preenche a lista
function preenchelista()
{
/*----------------------------------------------------------------------------------------------*/
// criacao do objeto XMLHTTP do arquivo ajax.js
var oHTTPRequest = createXMLHTTP();
oHTTPRequest.open("post", "objcliente.asp", true); //enviamos para a página que faz o select do que foi digitado e traz a lista preenchida.
// para solicitacoes utilizando o metodo post deve ser acrescentado
// este cabecalho HTTP
oHTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
// a funcao abaixo e executada sempre que o estado do objeto muda (onreadystatechange)
oHTTPRequest.onreadystatechange=function(){
// o valor 4 significa que o objeto já completou a solicitacao
if (oHTTPRequest.readyState==4){// abaixo o texto gerado no arquivo executa.asp e colocado no div
document.all.divCliente.innerHTML = oHTTPRequest.responseText;}}
oHTTPRequest.send("txtBusca=" + frm1.txtBusca.value);
/*---------------------------------------------------------------*/
}
</script>

Link para o comentário
Compartilhar em outros sites

  • 0

Olá pessoal !

Sou novo aqui!

Vi este post de vocês e estou quebrando a cabeça em algo muito parecido.

Tenho uma pagina que contabiliza em Javascript (variavel tempo de acesso) o tempo que o usuário ficou nela. Esta pagina é chamada novamente pelo usuário varias vezes, mas a cada chamada nova eu gostaria de contabilizar e gravar um Banco de Dados o tempo que o usuario visualizou a informacao da pagina...

O meu problema está em salvar a informacao do tempo que o usuario ficou na pagina (que eu já coletei com Javascript) no Banco de Dados (atraves de ASP) passando o valor da variavel tempo de acesso (em Javascript).

Tentei com IFRAME HIDDEN mas no evento ONUNLOAD ao chamar a funcao javascript que cria o IFRAME, faz com que a pagina pare no IFRAME.

Tentei também executar um form com popup mas fica abrindo popup e fecha na cara do usuario... Num ficou legal.....

Eu vi que pode ser atraves de AJAX mas num entendi como....

Abaixo segue o meu codigo

<script language=JavaScript>

<!--

function GravaTempo(tempodeacesso)

{

Aqui tenho que passar para o asp o valor da variavel tempodeacesso para ser gravada.....

}

//-->

</SCRIPT>

Aqui eu passo o tempo que o usuario ficou na pagina.....

<body OnUnload="GravaTempo(document.Form_ContagemProgressiva.tempodeacesso.value)">

Valeu pessoal...

Abs

Marcos Aires

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, não tenho certeza se está certinho ae para seu caso, mas é mais ou menos isso ae que tem que ter dentro da função, fiz de cabeça aqui e não sei se esqueci de alguma coisa, mas faz um teste ae.

{
    xmlHttp=GetXmlHttpObject()
    var url = 'grava_tempo_no_banco.asp'
    url = url + "?tempo=" + tempodeacesso
    xmlHttp.open("GET",url,true)
    xmlHttp.send(null)
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...