Técnico

Problema de foco com Flash/Flex no Firefox

Estou trabalhando em um projeto atualmente em que o cliente solicitou que o aplicativo pudesse ser controlado por teclas de atalho. Elas funcionam perfeitamente no Google Chrome e no IE mas, por algum motivo, o Firefox não trabalha muito bem com o foco em objetos “embedados” as vezes.

Depois de muitos testes, encontrei uma maneira bem simples de “resolver” esse problema. Primeiro você precisa abrir sua aplicação em algum navegador e olhar o código fonte de página. Procure pela tag <object> e olhe o valor do atributo “id” dela. Se você estiver no Flex usando o template padrão, esse valor deverá ser o nome da sua Application. No meu caso esse valor é “index”. Então escrevi essa linha em JavaScript para colocar o foco novamente no Flash:

[javascript]document.getElementById(‘index’).focus();[/javascript]

Para usar esse código em sua aplicação Flex sem precisar mudar nada no template, faça:


navigateToURL(new URLRequest("javascript:try{ document.getElementById('index').focus(); void(0); }catch(err){}"), "_self");
algumComponente.setFocus();

Funcionará melhor se você tentar encontrar onde sua aplicação está perdendo o foco (ao abrir alguma popup, no meu caso) e colocar o código logo em seguida. Usei um try/catch para evitar problemas, como no caso do usuário abrir o SWF diretamente.

Espero que seja útil,
Abraços!

Autor(a)

Andre Gil

Comentários (3)

  1. Problema de foco com Flash/Flex no Firefox | Galaxyz do Brasil
    28 de setembro de 2010

    […] Problema de foco com Flash/Flex no Firefox […]

  2. Barao
    10 de outubro de 2010

    Muito bom isso!
    Estou desenvolvendo um sisteminha que precisa efetuar login e precisava clicar na combobox pra escolher o usuário, não dava pra simplesmente apertar pra baixo e dar tab pra entrar com a senha 😀
    Valeu André!

  3. EverSilverio
    25 de maio de 2011

    No chrome 11.0.696.68 não rolou… alguma alternativa?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *