Conflito do SWFobject com IE6 – Erro de Operação Anulada

SWFObject, para quem ainda não conhece, é uma biblioteca javascript muito legal para inserção de arquivos SWF em sua página web sem maiores complicações de incompatibilidade entre navegadores.

swfobject_logo-300x76

Esta semana tive um problema de conflito com o uso do SWFObject para usuários que ainda usam Internet Explorer 6. Ao acessar a página o nosso querido browser de 2001 da Microsoft, aparecia um erro “Operação Anulada” e não abria nenhuma parte do conteúdo.

Aí­ descobri que na verdade é um erro na interpretação do JavaScript. O IE6 não permite inserir conteúdo (append) no <body> se o script não for filho direto do próprio <body>. Complicado? Não importa. O importante é que a solução para isso é muito simples;

Existe um atributo para a tag <script> chamado DEFER, que pode solucionar, veja o que a própria W3C diz:

“When set, this boolean attribute provides a hint to the user agent that the script is not going to generate any document content (e.g., no “document.write” in javascript) and thus, the user agent can continue parsing and rendering.”

Em outras palavras, ele avisa pro navegador que o script não vai fazer o tal do append e ele continua renderizando o site normalmente.

Veja como a aplicação é simples:

<script defer="defer"> /* parí¢metros do SWFObject */ </script>

Seria muito bom se ainda não tivéssemos que perder tanto tempo buscando soluções para problemas que só o IE6 tem, não é verdade? Mas isso não significa que deixamos de nos preocupar com seus usuários, afinal a web deve estar acessí­vel a todos, independente de browser, dispositivo ou sistema operacional.

Faço isso por que é o meu trabalho, mas por outro lado não desejo dar suporte para o Internet Explorer 6 para sempre, e por isso criei há mais ou menos 1 ano a campanha Atualize seu Navegador (Updateyourbrowser.net). Caso não conheça, dê um pulinho por .