Depois da página feita fui testar em outros navegadores (eu crio primeiro no Firefox) e uma funcionalidade simples, que é o método toggle() do Jquery (utilizado pra esconder / exibir um elemento), havia parado de funcionar somente no IE8, até no IE6 funcionava, mas no 8 não.
O mais estranho era que a versão anterior dessa página utilizava o toggle e ele funcionava no IE8, por que então parou de funcionar?
O problema.
Depois de analisar bem o código percebi que a única diferença era que eu tinha trocado o elemento em qual eu invocava o toggle. Antes era uma DIV e depois eu troquei para uma TR.
Foi então que eu descobri, através desse tópico aqui (http://stackoverflow.com/questions/975153/jquery-toggle-not-working-with-trs-in-ie) que o toggle do Jquery não funciona bem no IE8. Ele esconde a primeira vez, mas após isso ele não consegue mais exibir. No meu caso como já vinha escondido quando a página era carregada, ele nunca aparecia.
A solução.
Parece que o problema acontece devido a forma que o Jquery valida se o TR está escondido ou não, que retorna sempre true, falando que ele está visível.
Para solucionar o problema eu escrevi um método (ou função), que faz praticamente a mesma coisa que o toggle, só que verificando de outra forma, ficou assim (na verdade a ideia do método foi do Brian Bolton, naquele tópico que mencionei, eu apenas adaptei para funcionar com id's, que ficava melhor para o que eu precisava):

Utilizando essa função funcionou bem em todos os navegadores que testei.
Na verdade, se você habilitar a opção do IE8 de suporte a navegadores antigos funciona com o toggle simples, mas não podemos exigir que nossos clientes usem.
Enfim, mais uma vez isso só aumentou meu desejo de que o Internet Explorer sumisse de vez da internet, mas...
Espero que o post ajude quem estiver passando pelo mesmo problema.
Abraços.


1 comentários:
Valeu cara. Estava justamente com esse problema.
Postar um comentário