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!

3 Comments

Deixe um comentário

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

Compartilhe isso: