La proprità setFocus in Flex

Flex oscar Commenta l'articolo

Provando la proprietà setFocus di UIComponent di Flex (oppure della classe FocusManager) ho notato che all’avvio dell’app il componente era contornato dal blu del fuoco, ma il cursore non era presente. Infatti digitando qualunque tasto il componente col fuoco non veniva valorizzato.

Questo perché il browser non fornisce il fuoco all’oggetto swf al suo avvio, quindi è necessario fornirglielo a mano con un javascript.

Il codice mxml è:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
private function init():void{
focusManager.setFocus(textMio); // oppure textMio.setFocus();
}
]]>
</mx:Script>

<mx:TextInput x="152" y="104" id="textMio"/>

</mx:Application>

quello javascript è:

<script>
function getFlashMovieObject(movieName){
  if (window.document[movieName]){
      return window.document[movieName];
  }
  if (navigator.appName.indexOf("Microsoft Internet")==-1){
    if (document.embeds && document.embeds[movieName])
      return document.embeds[movieName];
  }else{
    return document.getElementById(movieName);
  }
}

function setFlexAppFocus(){
    getFlashMovieObject('xxx').focus(); //xxx è l'oggetto swf
}

</script>

infine nel body html bisogna aggiungere:

< body onLoad="setFlexAppFocus()">
</body>

Scrivi un Commento

Home | Graffiti e Disegni | Educazione | Chi siamo | Blog | Progetti | Contatti
RSS Feed Comments RSS Accedi