Newsgroup: it.comp.lang.javascript
Titolo: focus in una sola delle due finestre

Ciao a tutti,
il problema che mi assilla è banale. Io apro due finestre di seguito, 
diciamo A e B.
Vorrei che A fosse sotto, e B sopra. In altre parole, B deve avere il focus.
Se io apro le due finestre di seguito, il risultato è che a volte A ha il 
focus, ed altre
volte è B ad avere il focus. Anche impostando con la forza il focus a B, il 
comportamento
è sempre aleatorio. A cosa è dovuto ciò, e come posso risolvere? 

Se usi qualcosa del tipo
onblur="window.focus()" nel tag <body> è troppo aggressivo?
Alex.


Ho provato a usare onblur="window.focus()" nella pagina B (quella che voglio 
evidenziare), ma non è cambiato nulla: ha sempre un comportamento casuale.
E' proprio questo che non riesco a capire, come mai sotto le stesse 
condizioni una volta si apre prima la pagina A, un'altra volta si apre prima 
la B. 

 Fai quest'altra prova, nella pagina che vuoi in primo piano:
[CUT]
Un'altra idea: un setTimeout nella pagina madre che dà focus() a quella
corretta?
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 Tentar non nuoce.
Ho provato, ma c'è un problema. Il focus viene dato correttamente a B, ma A 
scompare, cioè non è visibile sullo schermo. Per visualizzarla bisogna 
andarla a pescare dalla barra delle applicazioni in basso. 

 corretta?
Il tuo metodo funziona! Però per essere fiscali non è la soluzione al 
problema, ma lo raggira. Quello che non capisco è questo: com'è possibile 
che il codice venga eseguito in maniera diversa a parità di condizioni? Se 
scrivo che deve eseguire prima A, e poi B, quest'ordine dovrebbe essere 
sempre rispettato ad ogni esecuzione. Cosa mi sfugge ? 

 sempre rispettato ad ogni esecuzione. Cosa mi sfugge ?
Che, immagino, aprendo una nuova popup dai in pasto al Sistema Operativo la
sua gestione. onload viene eseguito al termine del caricamento della
pagina. Quindi, per esempio, se una delle due è più "pesante" dell'altra
anche se la apri per prima potrebbe arrivare per seconda.
window.open restituisce un riferimento alla window quando viene creata, non
quando ha terminato il caricamento della pagina.
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 comportamento è sempre aleatorio. A cosa è dovuto ciò, e come posso risolvere?
Se scrivendo:
	window.open("a.html","a");
	window.open("b.html","b").focus();
Non risolvi, significa semplicemente che talvolta il server fornisce prima
il risultato di A, talvolta di B. Questo fattore può cambiare il risultato
finale di chi ottiene il focus.
Per essere sicuro che sia sempre B ad avere il focus, oltre che impostarlo
in fase di apertura puoi aggiungerlo ad A. Ovvero, qualcosa del genere:
Nella opener:
	window.open("a.html","a");
	/* wnB variabile globale */
	wnB=window.open("b.html","b");
	wnB.focus();
In A:
window.onload=function(){
	if (window.opener && window.opener.wnB && !window.opener.wnB.closed)
		opener.wnB.focus();
}
In questo modo appena A viene caricata, passa il focus a B.
Non ho mai dovuto fare cose del genere, ma dovrebbe funzionare.
-- 
var SEI	= "1+5", NOVE = "8+1";
// dump TheAnswerToLifeTheUniverseAndEverything :
alert("Cosa ottieni moltiplicando "+
	eval(SEI)+" per "+eval(NOVE)+"? "+eval(SEI+"*"+NOVE));