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

OnmouseMove não funciona com SetTimeOut e Alerts no Chome


Diogox

Pergunta

O que há de errado com esse código? Ele funciona no IE e no Firefox mas no Chrome não funciona.

A idéia é que a função fnTimeOut será disparada em 5 segundos após o onmousemove (percebam que fnTimeOut foi colocado no onmousemove do documento). Quando, IE e no Firefox, eu clico no botão "ok" é disparado o alert(1) e depois de 5 segundos (já que eu movi o mouse e disparei o onmousemove do document) o alert(2) é disparado. No chrome estranhamente os dois alerts são executados um atrás do outro sem respeitar o setimeout. Alguém pode me ajudar? Segue o código?

<input type="button" onclick="alert(1);" value="ok">

<script>

document.onmousemove = fnTimeOut;

var t = null;

function fnAlert()
{
    alert(2);
}

function fnTimeOut()
{
    clearTimeout( t );
    t = setTimeout( fnAlert, 5000 );
}
</script>

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
O objetivo é mostrar o alerta ao mexer o mouse ou clicar no botão?

Na verdade é apenas um exemplo didatico. O que eu quero é que o onmousemove dispare a função fnAlert depois de 5 segundos. No meu caso real o usuário será direcionado para a tela de login se ele parar de mover o mouse. Então, nesse caso que eu coloquei como exemplo, o que eu quero é que ao clicar no botão seja mostrado o alerta "1" e só depois de 5 segundos seja mostrado o alerta "2". No chrome, a função dentro de setTimeOut está sendo executada instantâneamente. Os dois alerts estão sendo executados um atrás do outro.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Jonathan, perceba que eu já havia colocado o código:

document.onmousemove = fnTimeOut;

var t = null;

Ao LEVAR o cursor para clicar no botão eu disparei o onmousemove do document. Correto? Sendo assim a função fnTimeOut irá ser executada. No momento que eu clico no botão é disparado o alert(1). Até aí tudo bem? Mas perceba que a função fnTimeOut que havia sido disparada antes, só executará de fato a ação depois de 5 segundos já que eu uso o setTimeOut. Mas no crhome executa imediatamente.

Crie uma pagina html com o codigo exatamente como eu coloquei e teste no chrome.

Link para o comentário
Compartilhar em outros sites

  • 0

Foi mal, é que alterei o código pra ficar mais fácil de testar e removi essa linha.

Esse problema é realmente muito estranho. Para ser sincero, acredito que possa ser algum erro do navegador. E isso só ocorre quando a ação executada no onclick do botão chama a função alert. Tentei colocar os dois eventos (clique do botão e movimento do mouse) para mostrar um texto na tela e funcionou perfeitamente. Ao alterar o clique do botão para o alert novamente, o problema voltou.

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