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: