08th abr 2009

O POG nosso de cada dia #4

8 da noite, você indo embora pra casa, pensando na sua cama, e vem a frase:  “Opá, pode dar uma olhada porque está dando esse probleminha no IE6, no site X?
Você vai ver e não entende o porque está com um erro estranho de javascript: o IE dando aquelas mensagens “Erro na linha 22: objeto é nulo” logo no carregamento da página.

Abre o código, olha, e começa a achar estranho… estava tudo okey, carregando as bibliotecas jQuery e DWR (essa para integrar aplicações Java através de requisições assíncronas),mas aí começava a espirrar o erro de javascript. E nada. E nada.

<script src=”/js/jquery.js” type=”text/javascript” ></script>
<script src=”/js/jquery.rules.js” type=”text/javascript” ></script>
<script type=”text/javascript” src=”/dwr/engine.js”></script>
<script type=”text/javascript” src=”/dwr/util.js”> </script>

Percebi que no javascript, $(document).ready() – da jQuery – funcionava, mas dentro dele nada mais funcionava. Tentava acessar, por exemplo, $.browser para saber qual o browser, e nada.
2 horas testando, mudando coisas, procurando documentação, e nada.

No momento de desespero, veio o insight: é algum conflito entre a jQuery e o DWR. Me lembrei de muitas vezes que tive conflitos entre bibliotecas: TinyMCE com Prototype, por exemplo.
A solução? Inverter a ordem de chamada.

<script type=”text/javascript” src=”/dwr/engine.js”></script>
<script type=”text/javascript” src=”/dwr/util.js”> </script>
<script src=”/js/jquery.js” type=”text/javascript” ></script>
<script src=”/js/jquery.rules.js” type=”text/javascript” ></script>

Voi-lá! Funcionou.
Porque? Sem idéia…

Posts relacionados

Avalie

1 estrela2 estrelas3 estrelas4 estrelas5 estrelas (No Ratings Yet)

7 Responses to “O POG nosso de cada dia #4”

  1. Luiz Paulo says with Firefox on Windows XP

    Nossa…
    Essa doeu hein, rsrs.

    []‘s

  2. Thiago Cavalcanti says with Firefox on Ubuntu 8.10

    As possíveis soluções mais simples são sempre as que eu testo primeiro. Mesmo que eu não tenha razão nenhuma para achar que aquilo resolve o problema eu testo, porque custa pouco tempo mesmo. É o famoso “por desencargo de consciência”.

    Já passei por esse caso que você descreveu e trocar a ordem de chamada também resolveu meu problema. Acho que deve ter alguma coisa a ver com a forma que o IE cria os objetos, já li em algum lugar que ele deixa isso por último e que portanto podemos estar referenciando métodos e objetos que ainda não existem (WTF!) para o interpretador.

    Enfim, maluquice de programadores da Microsoft, provavelmente crentes de que estavam otimizando alguma coisa…

  3. Chris says with Firefox on Mac Os X 10.5

    Então, quando vi o problema lá do TinyMCE com a Prototype, existia uma explicação na documentacão da Prototype.
    Mas, nesse caso ae, nada falando na jQuery, nada no DWR… bizarro demais!

    Da próxima vez, vou mesmo fazer as coisas mais simples, mesmo que não tenham sentido. Pois é assim que o IE é… hehe

  4. Cayo Medeiros aka. yogodoshi says with Firefox on Windows XP

    Ahh nem chega a ser um POG, pelo contrário, é uma bela dica, as vezes as pessoas nem pensam em mudar a ordem das chamadas! (eu também só lembro depois que perdi horas tentando outras coisas ¬¬)

  5. Chris says with Firefox on Mac Os X 10.5

    @yogodoshi nossa, pra mim é POG total ficar mudando aleatoriamente as coisas de lugar pra ver se funcionam, no desespero.
    Mas, ainda vou pegar um dia e tentar entender onde estava o conclito! hehe

    []s!

  6. Chris B. – idéias e pensamentos » Qual o melhor POG até agora? says with Wordpress

    [...] [...]

  7. O POG nosso de cada dia #18 - Index Blogs Geral says with Wordpress

    [...] O POG nosso de cada dia #4 (6) Diversos nenhum [...]

Leave a Reply