Inserindo Flash sem acabar com a acessibilidade

por Rafael Dourado - 23/09/2007

Depois da discursão que rolou no último Puto-que-os-pariu e de algumas conversas pelo Messenger, percebi que o artigo sobre UFO do Henrique já está tão antigo que muitas pessoas podem não ter lido.

Antes de conhecer essa técnica eu utilizava a Flash Satay, porém tive problemas com um cliente que precisava que seu site fosse acessível para celulares. Não sei em outros celulares — estou apenas começando a estudar as particularidades de sites para celulares (e correndo o risco da Apple mudar tudo) — mas no BlackBerry que o cliente usava, Flash ou travava a aplicação com um erro ou criava um buraco branco gigante no espaço que se pretendia preencher.

E mesmo em computadores pessoais, o Internet Explorer mostrando aquela caixa branca com um xis vermelho seguido de um aviso não é nada agradável para quem não sabe nem que o Flash tinha versão, quanto mais que era “obrigado” a atualizá-la.

Para resolver esses problemas, um cidadão chamado Bobby van der Sluis criou o Unobtrusive Flash Objects (UFO). Ele nada mais é que um script que verifica a existência do Flash Player na máquina do usuário e, caso ele existe na versão desejada, exibe o Flash em uma div. Ou seja, é possível utilizar Flash em seu site e ainda assim seguir os padrões web sem discriminar ninguém que supostamente não é o seu público. Basta seguir esses passos:

  1. Copie este script para o servidor.
  2. Coloque o seguinte código na entre o <head> e o </head>, prestando atenção no caminho onde o arquivo está:
    <script type="text/javascript" src="../ufo.js"></script>
  3. Escolha a div cujo conteúdo será substituido pelo Flash e escreve este código logo após a linha anterior:
    <script type="text/javascript">
    var FO = { movie:"nomeDoFlash.swf", width:"300", height:"120", majorversion:"6", build:"0" };
    UFO.create(FO, "nomeDaDiv");
    </script>
  4. Qualquer dúvida, consulte a página de exemplo.

Pronto. Acabou a briga com os usuários fora do seu target. Ou não…

13 comentários para “Inserindo Flash sem acabar com a acessibilidade”

  1. Daniel Accorsi Says:

    Muito boa a dica! fica pro dia-a-dia mesmo…
    Abração e tenha uma excelente semana.

  2. Adriano Macêdo Says:

    Para dar um melhor “acabamento” no flash, insira algo como:

    fo.addParam(”quality”, “best”);

  3. Raphael Says:

    Cara, obrigado mesmo, funcionou perfeitamente.

    Agora eu só to com um problema.

    Eu tenho 4 divs na mesma página, ou seja, essa função, esse exemplo, está chamando um DIV, e eu preciso chamar 4 DIVs ao mesmo tempo. Como poderei fazer isso, como posso separar os scripts ?

    Agradeço desde já. Abs !

  4. Rafael Dourado Says:

    É só ir duplicando a variável e a chamada do método. Assim:

    var FO = { movie:”nomeDoFlash.swf”, width:”300″, height:”120″, majorversion:”6″, build:”0″ };
    UFO.create(FO, “nomeDaDiv”);
    var FO = { movie:”nomeFlash2.swf”, width:”300″, height:”120″, majorversion:”6″, build:”0″ };
    UFO.create(FO, “nomeDaDiv2″);
    var FO = { movie:”nomeFlash3.swf”, width:”300″, height:”120″, majorversion:”6″, build:”0″ };
    UFO.create(FO, “nomeDaDiv3″);

  5. Raphael Says:

    Perfeito !!! Deu tudo certo agora. Po, obrigado mesmo, posso dizer que você salvo minha vida. Vlw mesmo.

    Abraços !!!

  6. Raphael Says:

    Pessoal, sem querer ser chato, mas quando eu colocava Flash sem DIV, eu usava:

    E agora usando o script UFO, não consigo deixar os flash’s com fundo transparent.

    Como faço isso ? Desculpe o abuso, mas acho q só falta isso pra ficar perfeito.

    Obrigado !

  7. Raphael Says:

    Pessoal, sem querer ser chato, mas quando eu colocava Flash sem DIV, eu usava:
    ////

    E agora usando o script UFO, não consigo deixar os flash’s com fundo transparent.

    Como faço isso ? Desculpe o abuso, mas acho q só falta isso pra ficar perfeito.

    Obrigado !

  8. Raphael Says:

    Pessoal, sem querer ser chato, mas quando eu colocava Flash sem DIV, eu usava:
    param name=”WMode” value=”Transparent”

    E agora usando o script UFO, não consigo deixar os flash’s com fundo transparent.

    Como faço isso ? Desculpe o abuso, mas acho q só falta isso pra ficar perfeito.

    Obrigado !

  9. Raphael Says:

    Desconsiderem os dois acima do ultimo post, só queria saber como deixar o SWF com fundo transparente nesse caso.

    Abraços !

  10. Rafael Dourado Says:

    Rafael, os parâmetros no UFO são adicionados assim:

    fo.addParam(”PARAMETRO”, “VALOR”);

    Pra deixá-lo transparente, basta adicionar o parametro wmode.

    fo.addParam(”wmode”, “transparent”);

  11. Raphael Says:

    Obrigado, mas acho que sou meio leigo nisso, não estou sabendo aonde inserir esse parametro.

    Na index está assim:

    script type=”text/javascript” src=”ufo.js”>

    var FO = { movie:”quad_1.swf”, width:”324″, height:”228″, majorversion:”6″, build:”0″ };
    UFO.create(FO, “quad_1″);
    var FO = { movie:”menu.swf”, width:”558″, height:”39″, majorversion:”6″, build:”0″ };
    UFO.create(FO, “menu”);
    var FO = { movie:”texto-novosite.swf”, width:”322″, height:”55″, majorversion:”6″, build:”0″ };
    UFO.create(FO, “texto”);
    var FO = { movie:”news.swf”, width:”188″, height:”325″, majorversion:”6″, build:”0″ };
    UFO.create(FO, “news”);
    fo.addParam(”wmode”, “transparent”);

  12. Raphael Says:

    Como você viu, eu coloquei o param no final, antes da linha de fechamento do script, mas dessa forma não funciona.

  13. Rafael Dourado Says:

    Rafael. Tem uma forma mais simples. O wmode pode ser adicionado dentro das chaves do objeto. Assim:

    <script type="text/javascript">
    var FO = { movie:"nomeDoFlash.swf", width:"300", height:"120", majorversion:"6", build:"0", wmode:"transparent" };
    UFO.create(FO, "nomeDaDiv");
    </script>

Deixe uma resposta