Newsgroup: it.comp.lang.javascript
Titolo: swf e focus

Ciao a tutti.
Quando nella pagina all'evento onLoad do il focus ad un file swf, su IE 
non ho problemi, mentre Firefox non riesce.
Utilizzo un normale window.document.id_swf.focus()
C'è un modo per ovviare?
Grazie.

 C'è un modo per ovviare?
Non puoi accedere ad un "id" di un elemento senza specificare al browser che
quello che gli stai passando è un id. IE riesce a darti retta solo perché
butta in un calderone tutto ciò che trova durante il parsing della pagina.
Prova con:
document.getElementById("id_swf").focus();
PS: window è l'oggetto globale nei browser, sottointendibile nel 99% dei
casi.
PPS: ma come mai devi dare il focus all'swf?
Ro!


Piu' che altro c'e' un modo per farlo giusto...
Infatti il problema che IE e un po' troppo "permissivo", cioe' per
riferirti ad un oggetto della tua pagina devi usare un metodo che si si
chiama getElementById,
devi fare una cosa del genere:
  obj = null;
  if( typeof document.getElementById != "undefined" )
  {
    if( obj = document.getElementById(id) )
      myobj.focus( );
  }
  else
  {
    alert( 'Lo aggiorniamo questo browser!' );
  }

 devi fare una cosa del genere:
 
http://www.criosoftware.it/default14.aspx
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

intanto, grazie ad entrambi per le risposte.  :-)
All'interno del file swf è possibile dare il focus ad un campo di testo 
e far presentare il cursore lampeggiante nel campo di testo di flash. 
Ora, se questo cursore deve essere visualizzato al caricamento del file, 
su Firefox viene skippato, mentre IE non ha problemi. Questo, secondo 
una vecchia technote di Macromedia, potrebbe dipendere dal fatto che 
tutto l'swf non ha focus.
Cerveza
Ro! ha scritto:


ho provato anche l'esempio corretto:
evidentemente è qualcosa che riguarda il plugin e firefox, non tanto 
javaScript.
Cerveza
Cristiano Larghi ha scritto:


eccola:
http://www.macromedia.com/cfusion/knowledgebase/index.cfm?id=tn_15586
Cerveza
Cerveza ha scritto:


> 
http://www.macromedia.com/cfusion/knowledgebase/index.cfm?id=tn_15586
Oh mamma mia!
<body bgcolor="#FFFFFF" onLoad="window.document.movieID.focus();">
<object classid="..." codebase="...."
    width=550
    height=400     name="movieID">
E' un codice sbagliato, sbagliato e vecchio!
Ro!

capisco, ma...
Ho provato varie soluzioni ma nessuna ha funzionato.
Se la technote dal 2001 non è stata aggiornata vuol dire forse che la 
cosa non si è risolta.
Cerveza


 cosa non si è risolta.
Forse non si è voluta risolvere e comunque, quel codice era già vecchio (e
scorretto) nel 2001.
<body style="background-color:white;"
onload="document.getElementById('movieID').focus();">
<object classid="..." codebase="...."
    width="550"
    height="400"     id="movieID">
Non esiste un attributo name per <object>. Se utilizzi HTML 4 (DTD loose o
strict) allora potresti avere un attributo del genere, e fare:
<body bgcolor="#FFFFFF"
onload="document.getElementsByName('movieName')[0].focus();">
<!--    ^^^  nella strict di HTML 4 non esiste bgcolor -->
<object classid="..." codebase="...."
    width="550"
    height="400"     name="movieName">
Entrambi sono codici validi (il primo XHTML e il secondo HTML),
stilisticamente non impeccabili (visto che mischiano codice JS, CSS e
contenuto della pagina) ma l'ho scritto solo per farti capire. A tal
proposito puoi cercare "Javascript unobtrusively" su Google per avere
maggiori informazioni.
Ro!