Pular Links de Navegação
login
contato
Somewhere between the infinite and imagination...
Junho
3
2009


Atenção ao “onmousemove”

Um dos eventos javascript mais utilizados no desenvolvimento de páginas web é o “onmousemove”, obviamente disparado ao mover o cursor do mouse sobre a página que o invoca. Este é um evento utilizado, por exemplo, em funções que criam algum elemento que segue o curso do mouse, a medida em que o usuário realiza os movimentos.

Ex.:

document.onmousemove = follow;

 Onde “follow” é uma função que captura a posição(X / Y) do mouse e cria uma div que acompanha esta posição (por exemplo).

 O motivo pelo qual devemos estar atentos a utilização deste recurso javascript, é que nem todos os navegadores se relacionam naturalmente com ele, como alguns outros o faz. Aliás, o mal da programação web é o fato de que o padrão é não existir padrão, e o mal do programador web é trabalhar com um “padrão” apenas no lado cliente... mas isto vale uma postagem exclusiva sobre o assunto.

Mas então, como assim, naturalmente?

No Mozilla Firefox, Chrome ou Opera, por exemplo, se você invocar uma função como a acima descrita, a qual cria um elemento e anexa ao “body” do documento, pressupõe-se automaticamente que o elemento “body” já tenha sido carregado, para assim ter o elemento anexo a ele.
No Internet Explorer não funciona assim, pois, este leva ao pé-da-letra, ou seja, a página começa a ser carregada, as funções são lidas e entendidas pelo navegador e, você (claro) movimenta o ponteiro do mouse. Graças a este movimento, que acontece antes do carregamento do “body”, você invoca a função que cria e anexa um elemento ao “body”. Mas espere um pouco... como anexar algo ao “body” se este ainda nem foi carregado? - Bem, como eu disse, os outros navegadores, por algum motivo entendem esta sequência, talvez por aguardar o corpo do documento carregar por completo para daí então se preocupar com os outros eventos (vale aí um estudo mais profundo sobre este assunto), no IE não é assim que funciona e o erro ilustrado na imagem abaixo “pula” na tua tela.
Enfim, para não ter problemas com o Internet Explorer e (a maioria ainda de seus) usuários, vale checar se o corpo já foi carregado, antes de querer anexar algo a ele.

Nada de complexidade, apenas um teste simples como:

 
if( document.body != undefined && document.body != null){

document.body.appendChild( divElem );

.
.
.

}

 

Agora parece óbvio, mas quando essa telinha começa a saltar do nada na tua aplicação, fica difícil encontrar uma resposta para o fenômeno, até porque o IE é mestre em nos avisar que há um erro em algum centímetro quadrado do Oceano Atlântico...

Espero que o problema que você esteja passando seja solucionado após esta dica...

 

 Confira abaixo a imagem do popup lançado pelo Internet Explorer:


 
Comentários


8/6/2009 10:09

Alexandre
 escreveu:
Mais um pouco você fica como eu nisso!!
rrsrsrsrsrssr
Parabéns



Postar um comentário
De:

Comentário:

 



Últimas Postagens

Um conversor de Collection para SimpleListData
por Saulo Júnior em 26/11/2009 00:00:42

Ubuntu Studio 9.04 travando no HP DV5 1235dx
por Saulo Júnior em 7/9/2009 18:10:48

Meu primeiro "erro de edição"
por Saulo Júnior em 9/7/2009 12:09:41

Atenção ao “onmousemove”
por Saulo Júnior em 3/6/2009 21:49:09

Considerações Iniciais
por Saulo Júnior em 23/5/2009 14:52:29
Sobre Saulo Júnior
Estudante & Desenvolvedor, e vice-versa. Atuando no desenvolvimento de sistemas, com ênfase em aplicações web, utilizando as tecnologias .net e Java. Entusiasta do desenvolvimento de interfaces dinâmicas e interativas. Músico amador e torcedor fanático.

Histórico





Esta é a versão 2007/08 do site saulojunior.com.br que foi publicado em Março de 2007. Trata-se de um hotsite concebido em Flash, promovendo uma interessante experiência de interatividade no formato de um game. Clique aqui e experimente! (Para sair, clique fora da área do Flash)
Testado: 
Copyright © 2007-2010 Saulo Junior. All rights reserved