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:
-
document.getElementById(‘index’).focus();
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!




