Newsgroup: it.comp.lang.javascript
Titolo: [NN] Il problema del focus() ---> TUTTO CONTROLLATO DALLA OPENER

Come da Subject, la pagina seguente contiene uno script che mantiene il focus 
alla finestra figlia.
Fa uso di una variabile ("figlia" appunto che tiene traccia dell'apertura della finestra.
Finché la variabile č "true" la finetra figlia č aperta.
Nel momento in cui la finestra viene chiusa, il successivo focus sulla padre 
(notate che c'č un "onFocus()" nel <BODY>) genera un errore che viene 
intercettato da "onError", questo chiama la funzione recupera(msg).
"msg" contiene il messaggio d'errore. In Netscape č "a.focus is not a function" 
(ricavato sperimentalmente), se il messaggio contiene "a.focus" cambio di stato 
alla variabile "figlia" cosě BruciaFiglia() dell'onFocus() nel <BODY> non 
agisce piů.
Due punti deboli:
- il testo di "msg" l'ho ricavato sperimentalmente. Qualcuno che ha un Netscape 
diverso da 4.7 eng dovrebbe farmi la cortesia di provare lo script.
- Sotto IE (io ho il 4) non funziona. Chi lo sistema?
<HTML>
<HEAD>
	<TITLE>Window Focus </TITLE>
<SCRIPT>
<!--
var figlia=false;
onError=recupera;
function recupera(msg)
	{msg.indexOf("a.focus")!=-1?figlia=false:null;}
function BruciaFiglia()
	{if(figlia) {a.focus()};}
 
function finestra()
	{
	a=window.open('pagina.html','','width=300,height=200,status=no,menubar=no,resizable=no,scrollbars=no');
	figlia=true;
	}
//-->
</SCRIPT>
</HEAD>
<BODY onFocus="BruciaFiglia()">
<FORM><INPUT TYPE="button" VALUE="clicca" onClick="finestra()"></FORM>
</BODY>
</HTML>
Ciao, Riccardo
-----------------------------------------------------------------------
http://www.jsdir.com
Need a JavaScript password?
http://www.agora.it/Ri.Riccardi/ingresso.html
-----------------------------------------------------------------------
"Any sufficientely advanced technology is indistinguishable from magic"
Arthur Charles Clarke
-----------------------------------------------------------------------

Dichiaro a come variabile  var a=0;
Se a =0 imposto figlia=true
quindi controllo se figlia ==false     ......a.focus().......e poi
self.blur()..
Provato con NN4.7 e IE 5.5........
cmq il codex modificato.........
<HTML>
<HEAD>
<TITLE>Window Focus </TITLE>
<SCRIPT>
<!--
var a=0;
var figlia=false;
onError=recupera;
function recupera(msg)
{msg.indexOf("a.focus")!=-1?figlia=false:null;}
function BruciaFiglia(){
if(a==0){
figlia=true;
}
else if(figlia==false) {
a.focus()
}
self.blur();
}
function finestra()
{
a=window.open('pagina.html','','width=300,height=200,status=no,menubar=no,re
sizable=no,scrollbars=no');
figlia=true;
}
//-->
</SCRIPT>
</HEAD>
<BODY onFocus="BruciaFiglia()">
<FORM><INPUT TYPE="button" VALUE="clicca" onClick="finestra()"></FORM>
</BODY>
</HTML>
____________________
andreotta fabiano
WebMªster ATI POWER s.n.c.
andr...@atipower.it
http://www.atipower.it
http://www.afdsoftware.freeweb.org
____________________
javascript-javascript-javascript
http://www.jsdir.com
____________________
*¢ L'unica certezza nella vita è che tutto è relativo (per fortuna)¢*

 - Sotto IE (io ho il 4) non funziona. Chi lo sistema?
Su IE (5.0) funziona a tratti.. .Non funziona se ci si accede tramite
taskbar, oppure altra applicazione, non funziona se si "seleziona" una parte
della finestra genitrice, non funziona se si fa doppio click.
Su Netscape.. Beh, addirittura mettersi ad intercettare un evento di errore
in quel modo?
Tre appunti:
a) Javascript ha una bellissima proprieta' che funziona da dio su NS e un
po' meno su IE: window.closed... Usatela.
b) JScript ha una strafighissima funzione per aprire una finestra MODALE in
IE (e non NS): window.showmodaldialog... Usatela.
c) Andate a vedere il mio script su 
http://www.jsdir.com
 che sebbene non sia
affatto lo stato dell'arte e ampiamente ottimizzabile, ha una funzione
"openModalDialog" che funziona su entrambi i browser in quanto fa uso dei
succitati punti... :)
L'ho codata a lavoro, quindi di fretta, ed e' quel che e'.. a presto una
versione di codice migliore. ;)

 Provato con NN4.7 e IE 5.5........
Il codice da te postato non funziona ne' su IE (5.0) ne' su NS 4.72.
Su IE sballa proprio: Appena eseguo il codice (senza aver ancora aperto la
finestra figlia), la finestra principale mi perde il focus (!!).
NS 4.72 invece se ne sbatte bellamente..
Non ho studiato quel che hai postato, ma i risolutati finali sono questi. :/
Hai dimenticato di postare qualcosa, forse..? :?


Non discuto sulla costruzione dello script........ma adesso  l'ho riprovato
su IE 5.0 , IE 5.5  NN 4.7 , NN4.72 , NN6.......su PC diversi.......
funziona perfettamente su tutti tranne che su NN6 che perde il focus.....ma
probabilmente  è una cosa da sistemare(Netscape) visto che NN6 non tiene il
focus in nessuna maniera!!
Ho provato solo con  piattaforma  WIN .........di più nin sò...
Il tuo script su jsdir funziona perfettamente .....solo con NN6 non apre la
figlia e non ho capito perchè.....per caso lo sai?????


 figlia e non ho capito perchè.....per caso lo sai?????
Semplicemente non prendo in considerazione browser che non sono ancora stati
rilasciati in versione definitiva:
Gia' anche quelli hanno dei bug non indifferenti a cui noi, poveri
sviluppatori, dobbiamo "rimediare".. Se devo perdere il capo a cercar di
capire come far funzionare una certa cosa, applicando magari un codice CHE
NON FUNZIONERA' nella versione finale,
o molto piu' probabilmente sara' RIDONDANTE in quanto il problema non
sussistera' piu'.. beh, mi sembra una perdita di tempo.
Preferisco di gran lunga dedicarmi allo sviluppo di codice per le
piattaforme piu' diffuse ed in uso... Ovviamente dando una sbirciatina anche
alle nuove tecnologie, ma applicandole solo quando saranno ufficialmente
rilasciate.

 rilasciate.
Qui secondo me c'è un discorso da fare........nel senso che quello che per
noi è un dato di fatto non lo è per l'utente finale.....
il quale scarica NN6 , lo utilizza senza fare il ragionamento che hai fatto
tu sopra e che farei anch'io.
Secondo le statistiche NN6 è stato ampiamente "downlodato" soprattutto
perchè il 4.7 ha le sue pecche (non riesco d utilizzarlo per 3 ore di fila
senza che "crashi" e cmq lo preferisco ampiamente ad IE) quindi vuol dire
che molti lo stanno utilizzando nel bene e nel male............
L'esperto lo testa e capisce che è una beta.............l'utente lo usa , va
sul mio o tuo o altro sito,.....non funziano le pagine e dice: "Guarda stò
coglione di webmaster non sà fare nemmeno un sito!"
Perciò ho già dovuto passare una nottata a sistemare "javascript " per
NN6.....perchè un cliente al quale avevo fatto il sito l'ha installato ed è
venuto a dirmi che dovevo dare visibilità al suo sito anche a questo nuovo
Browser (come se fosse un bug mio).
Peraltro molte cose le hanno sistemate.......ma sono passati due
mesi...........


 mesi...........
Come Volevasi Dimostrare.
Hai dovuto lavorare per fare un sito, rimetterci mani per farlo vedere a
NN6, e poi loro hanno sistemato "alcune cose"... E ancora non siamo alla
versione ufficiale. Pensa te... ^__^
Ovviamente, ripeto, un occhiata al futuro bisogna darla:
Per questo strutturo i siti trame una programmazione in Javascript ad
oggetti, con una sorta di librerie, di "API" se vogliamo chiamarle cosi',
proprietarie.
In modo tale che poi si debba cambiare poche cose, per far funzionare "n"
siti.. Anche perche' spesso quel che cambia da browser a browser non e'
tanto la gestione del Javascript (che bene o male e' standard), quanto il
DOM ed i vari riferimenti.
Che con una programmazione ad oggetti oculata, risolvi in men che non si
dica.

 
http://www.freeweb.org/software/afdsoftware/focusss.htm
Come ti ho detto, ha dei problemi o non funziona.
Vediamo il perche':
<!-- loggato: - 
www.freeweb.org
 -  -  -
/usr/categorie/afdsoftware/focusss.htm file://-->
<HTML>
<HEAD>
<TITLE>Window Focus </TITLE>
<SCRIPT>
<!--
var a=0;
var figlia=false;
onError=recupera;
function recupera(msg)
{msg.indexOf("a.focus")!=-1?figlia=false:null;}
function BruciaFiglia(){
if(a==0){
figlia=true;
}
else if(figlia==false) {
a.focus()
}
self.blur();
/*
Ma cosi' facendo, non fai altro che far perdere SEMPRE CMQ E DOVUNQUE il
focus al "padre", ogni volta che
questo lo "prende"... Indipendentemente dalla finestra "figlia"...
.. Solo per questo motivo, lo script andrebbe rivisto interamente, IMVHO.
Inoltre, tale script subisce lo stesso effetto di quel pezzo di codice che
postai tempo fa da te tanto criticato. :)
Ovvero, accedendo tramite taskbar, il "self.blur" non funziona *SEMPRE* su
IE...
*/
}
function finestra()
{
a=window.open('pagina.html','','width=300,height=200,status=no,menubar=no,re
sizable=no,scrollbars=no');
figlia=true;
}
self.blur();
/* Ops... E questo?
Ci credo che appena viene eseguita la pagina, la finestra padre perde
IMMEDIATAMENTE IL FOCUS,
glielo dici te da codice!!! :))
questo "self.blur();" essendo fuori da qualunque function, viene eseguito
ancor prima di aver caricato il codice del <BODY>...
... Non mi sembra che lo script richiedesse questo.
*/
file://-->
</SCRIPT>
</HEAD>
<BODY onFocus="BruciaFiglia()">
<FORM><INPUT TYPE="button" VALUE="clicca" onClick="finestra()"></FORM>
</BODY>
</HTML>
Ok, dopo questi appunti, analizziamo il flusso del programma.
La prima cosa che la pagina fa, e' settare tali variabili ed eventi:
var a=0;
var figlia=false;
onError=recupera;
Successivamente, come abbiamo visto, perde il focus:
self.blur();
N.B.
E questo, sempre come abbiamo visto, succede ogni volta che la finestra
prende il focus (anche se, come ho detto in precedenza, ci sono dei casi -
indesiderati - in cui non succede sempre).
Cmq, a questo punto per cliccare sul pulsante, la finestra si prende -
giustamente - il focus, e quindi data:
onFocus="BruciaFiglia();"
Scatta:
function BruciaFiglia(){
if(a==0){
figlia=true;
}
else if(figlia==false) {
a.focus()
}
self.blur();
}
La variabile "a" e' a ancora uguale a zero mentre "figlia"e' a false.
Quindi, figlia viene settata a "true", viene perso il focus, viene aperta la
nuova finestra, viene perso NUOVAMENTE il focus della genitrice (e' una
mania? :?)
A questo punto, "a" e' diverso da 0, puntando alla finestra, e figlia e'
uguale a true.
La situazione e' che abbiamo la finestra aperta, con il focus, e la finestra
genitrice senza.
Ma adesso, proviamo a rendere il focus alla finestra genitrice. Scatta
nuovamente "BruciaFiglia();" e quindi:
function BruciaFiglia(){
// a e' DIVERSO da 0, quindi la condizione passa a "else":
if(a==0){
figlia=true;
}
// figlia e' DIVERSO da false, in quanto e' stata settata a true, e quindi
NON ESEGUE la condizione:
else if(figlia==false) {
a.focus()
}
// viene perso (sempre cmq e dovunque) il focus della genitrice.
self.blur();
}
Sostanzialmente, il focus non viene mai dato ad "a" tramite codice, e quindi
non verra' mai invocato l'evento "onError" quando tale finestra verra'
chiusa.
Questa e' l'analisi del codice da te postato e successivamente messo on-line
(dal quale l'ho ripreso).
Se c'e' qualcosa che non ho notato, che mi e' svuggito, o cos'altro, ti
prego di farmelo notare.
Dopotutto non so fin quanto possa essere accuratissima, avendola fatta sul
momento.
Cmq, spiegherebbe i risultati che io ottengo sulle mie macchine, e che ti ho
descritto nei post precedenti.
Cosi', a conti fatti, obiettivamente non vedo come uno script del genere
potrebbe funzionare, ne' tanto meno come potrebbe essere usato per lo scopo
per cui inizialmente e' stato realizzato da Riccardo.
Spero di essere stato sufficientemente chiaro nella spiegazione, e mi scuso
se mi sono dilungato troppo. ^_^

 */
Parti da questo presupposto: il codice l'ha fatto Riccardo e ha chiesto se
qualcuno riusciva a modificarlo perchè in IE dava un errore , non ha detto
fatene uno nuovo!
Di solito anche quando sul NG postano codice li rifaccio da me!! In questo
caso invece vista la richiesta specifica da parte di Riccardo e per rispetto
nei suoi confronti , non ho fatto nient'altro che togliere l'errore che dava
IE......
Avevi visto l'errore nello script originale per IE??
Tale errore era dovuto proprio al fatto che oltra a non trovare "a" definito
(cosa che ho fatto)......se "a" era chiusa prendeva il focus il "padre" e
quindi ripeteva l'errore" che oltretutto si verificava anche iconizzando la
finestra senza fare nient'altro!!
Per questo ho tolto il focus sempre e cmq al "padre"!!
Il resto è rimasto tale e quale e quindi ne devi chiedere spiegazione
all'autore , non posso dirti io perchè lo ha scritto così!!
Cmq visto che sui miei Browser funzia ANCHE PASSANDO PER LA TASKBAR ,  l'ho
preso per buono.....
non ho mai detto che non si poteva fare di meglio , anzi il tuo è senz'altro
migliore , però questo dovrebbe provarlo qualcun'altro per sciogliere questo
mistero (se non mi funzionava su più macchine non avrei mai postato
l'HTML!)!!:-))))))))


 l'HTML!)!!
Quale mistero?
La matematica non e' un opinione, e l'html che hai postato tu chiaramente
non puo' funzionare per un'istruzione condizionale.
E te l'ho dimostrato ampiamente.
Quel codice *non puo'* funzionare.
Analizzalo, cosi' come ho fatto io, e se credi che mi sbagli.. beh, per
favore dimostramelo.. Perche' obiettivamente io non vedo come un codice del
genere possa fare quello che e' richiesto.
Studia il flusso del programma, le condizioni che ti ho evidenziato, ed
arriva alla tua conclusione con un approccio scientifico.
Sulle macchine su cui l'ho provato NON FA QUELLO RICHIESTO.
Ma non mi sono limitato a dire "guarda sulle mie macchine non va' ", visto
che non eri convinto te l'ho anche dimostrato,
analizzando il tuo codice.
Visto che tu non l'hai ancora fatto, ti chiedo per favore di fare lo stesso.
Potremmo arrivare a due conclusioni: O "scopri" che lo script effettivamente
non funziona, oppure riesci a dimostrarmi che funziona.
In tal caso, saro' felicissimo di aver imparato qualcosa di nuovo. :)

<SCRIPT>
<!--
var a=0;
var figlia=false;
file://---------Eliminato onerror ----------non serviva più--non faceva cmq
danni--
function BruciaFiglia(){
if(a==0){
figlia=true;
file://--dichiarato a --se a =0  --cioè object window nin
esiste..-----figlia=true quindi niente tentativo di focus alla a--eliminato
primo errore dato dal codice originale su IE     self.blur() --eliminato
secondo errore --dato dal focus preso da padre su IE-quindi tolgo focus--
}
else if(figlia==false) {
a.focus()
}
self.blur();
file://--in alternativa a=object window----quindi figlia=false   --focus
alla a---blur alla padre--chiaro per evitare gli errori dati da IE!!---
}
function finestra()
{
a=window.open('pagina.html','','width=300,height=200,status=no,menubar=no,re
sizable=no,scrollbars=no');
figlia=true;  file://---questo è un mio errore che cmq non cambia il
risultato --ho dimenticato di togliere figlia=true--cmq apri figlia--blur al
padre---
}
self.blur();
Quello che conta è che questo script così com'è non può funzionare su IE se
cerca a.focus quando non c'è più- a ---e questo l'ho condizionato--non vedo
poi perchè padre debba avere il focus visto che lo deve avere figlia, ma per
qualcosa di misterioso su IE se non dai blur al padre oltre che focus alla
figlia ti dà errore
Non vedo cosa ci sia altro da spiegare.......spiegami tu perchè su NN basta
dare focus alla figlia e su IE se non dai allo stesso tempo blur al padre ti
dà errore ,chiaramente con questo script così com'è!!


 cerca a.focus quando non c'è più- a
Ovvio. A parte che come gia' detto in precedenza, tutto questo script in IE
e' perfettamente inutile (ma oramai non e' piu' questo l'oggetto del
thread), e' proprio la condizione che non va.
Semplicemente, a.focus NON VIENE MAI ESEGUITA come istruzione nel codice da
te postato all'inizio, e l'hai confermato tu stesso rianalizzandolo.
Ne sei convinto, adesso? O c'e' qualcosa che non ti e' chiaro...?

Gli errori cì erano eccome ciò non toglie che funziiona lo stesso.....non
vengo certo qui a sparare cazzate!!!
Sui miei PC funziona anche quello di prima se vuoi farti 400Km e venir qui a
vedere!!! Spiegami tu il perchè-------------
Sai quante cose non mi sò spiegare??
Stamattina stavo realizzando uno script e sai cos'è successo nel provarlo???
C'era un errore ,peraltro non rilevato ne da IE ne da NN però il  risultato
"non voluto" era che chiudevo la finestra principale senza avere messaggio
di conferma da parte del browser con un window.close() !!
Per il resto cosa vuoi che ti dica.....andrò a fare il test per vedere se
posso rispondere alle domande!!

 posso rispondere alle domande!!
Grazie, ma a questo punto le domande sorte sono semplicemente due:
a) Come pensi che l'instruzione a.focus possa essere eseguita (rileggiti sia
la mia che la tua analisi)
b) Cosa intendi tu per "funzionare"..

 b) Cosa intendi tu per "funzionare"..
INtendevo il test per vedere se posso rispondere alla domande sul NG non
alle tue-----------------------


 alle tue
E non sono la stessa cosa, in fondo? :)

 INtendevo il test per vedere se posso rispondere alla domande sul NG non


mannaggia la cavallina
naturalmente se si mette un url nella finestra da aprire č meglio...

voi non mi ascoltate mai...
:D
il setTimeout nelle gestione del focus con IE č una mano santa... 
notare che l'ho aggiunto sia in funzione che nel tag Body dell' opener
per dar tempo al browser di realizzare che 
"a" č stata chiusa.
<rimprovero lamentoso>
ascoltate ogni tanto anche noi smanettoni... 
;)
</rimprovero lamentoso>
mi pare funzioni anche da task bar
ho aggiunto qualcosa e tolto qualcosa
in particolare la gestione errore che 
non serve piů :p
ah, conviene anche dare un nome alla finesta "a" altrimenti IE ne apre
altre se si clicca direttamente sul pulsante per la diversa gestione
del focus
a parte tutto, vi sembra funzionare?
Atipower?, ZERO? Riccardo?
<HTML>
<HEAD>
	<TITLE>Window Focus </TITLE>
<SCRIPT>
<!--
var a
function BruciaFiglia()
	{if(a&&!a.closed) {setTimeout('a.focus()',40)}
	}
function finestra()
	{
a=window.open('','pippo','width=300,height=200,status=no,menubar=no,resizable=no,scrollbars=no');
	figlia=true;
	}
//-->
</SCRIPT>
</HEAD>
<BODY onFocus="setTimeout('BruciaFiglia()',40)">


 Atipower?, ZERO? Riccardo?
Commento normale: "Beh, mi sembra andare abbastanza bene."
Commento perfido: :D
I setTimeout sono una gran cosa, ma non vanno usati a sproposito.
Se il JS fosse multithread ed i setTimeout aprissero nuovi thread sarebbe
gia' un discorso differente, ma cosi' non e'.
Inoltre, per una manciata di secondi (due, tre) riesco ad acquisire il focus
della genitrice su IE, ed anche per di piu' se mi metto a "spostarla".
Senza contare che, sempre su IE (su NS cio' non accade), riesco
tranquillamente a prendere il focus della finestra genitrice, cliccando su
un menu' qualunque della toolbar.
Certo, sulla taskbar vedo che la finestra figlia cerca disperatamente di
riprendersi il focus :) (lampeggia) ma serve a poco.
Scusa, ma rimango della mia precedente idea: su IE la cosa migliore e' usare
la showModalDialog, funzione creata ad "hoc" per questo genere di
operazioni. E' inutile cercare di trovare una strada differente, se ce n'e'
gia' una piu' funzionale ed efficiente a portata di zampa.
Su NS, "closed" funziona benissimo, anche senza setTimeout.

	}
nel cancellare ho dimenticato un pezzetto che non serve più
il figlia=true qui non c'entra un accidente ed è perfettamente
inutile,eliminarla serenamente 
 e del resto la paternità... semper incerta

 
http://www.freeweb.org/software/afdsoftware/focusss.htm
Confermo. Anche a me non funziona.
Una volta aperto il "self.blur" toglie il fuoco alla "padre".
L'unico modo per ridargli focus è stato *ridurre a icona* tutte le altre 
applicazioni, invece con gli script mio e di Zero se rendevo attiva la "padre" 
restava a schermo (anche se il focus andava alla figlia).


 fatene uno nuovo!
Si, il colpevole sono io! :-(
Visto che mi confermate il cattivo funzionamento di ".closed" su IE, che ne 
direste di ricominciare dallo script mio?
Dopotutto sia ".focus" che "onError" sono implementati da NN3, ed intercettare 
un messaggio d'errore è un modo come un altro per far funzionare un programma.
Scommetto che siete in grado di elencare almeno una decina di script diversi 
per fare il rollover delle immagini, perché no trovare una strada "alternativa" 
per il focus di una modale?
Inoltre non è il caso di impazzire con la taskbar ecc. Quello che interessa è 
che :
a.- se è aperta la finestra padre
E (sottolineo "E")
b.- se è aperta la finestra figlia
ALLORA
c.- il focus dev'essere alla figlia.
I casi in cui "a" e/o "b" o siano falsi NON CI INTERESSA. Non vorrete mica 
bloccare la GUI dell'ospite sulla finestra modale no?
Vi ripropongo lo script.
C'è qualcuno in grado di intercettare correttamente il mex d'errore di IE?
Io dopo aver reinstallato il PWS non ho più la guida JScript di IE (maledetta 
microsoft, ma che gli costava un fottuto PDF??????)
Attenzione alla function "finestra()" che è andata a capo!!!!
<HTML>
<HEAD>
	<TITLE>Window Focus </TITLE>
<SCRIPT>
<!--
var figlia=false;
onError=recupera;
function recupera(msg)
	{msg.indexOf("a.focus")!=-1?figlia=false:null;}
function BruciaFiglia()
	{if(figlia==true) {a.focus()};}
 
function finestra()
	{
	a=window.open('radicivarie.txt','','width=300,height=200,status=no,menub
ar=no,resizable=no,scrollbars=no');
	figlia=true;
	}
//-->
</SCRIPT>
</HEAD>
<BODY onFocus="BruciaFiglia()">
<FORM><INPUT TYPE="button" VALUE="clicca" onClick="finestra()"></FORM>
</BODY>
</HTML>
Prima che mi dimentichi: il discorso NN6 è [OT] in questo thread.


Su NS, "closed" funziona benissimo, anche senza setTimeout.
Il caro vecchio Netscape, io continuo a fare il tifo.
Ciao a tutti, neh? e non litigate, che siamo tutti servi inutili (e
tutti un po' utili..)

 naturalmente se si mette un url nella finestra da aprire č meglio...
:-))))))))


 gia' una piu' funzionale ed efficiente a portata di zampa.
Pur dandoti ragione, su questo sono assolutamente in disaccordo (così ti faccio 
inc****re un po' anch'io :-))
Nella mia veste di programmatore, considero ancora un vanto riuscire a 
contenere il codice. Se questo non ha più senso ora che la RAM ce la tirano 
dietro non mi importa.
D'accordo, showModalDialog è stata creata apposta. Ma non se ne poteva fare a 
meno? Bastava far funzionare come si deve l'onFocus.... :-(
Ok. Usiamola pure, ma mettere *IO programmatore* una patch al mio prodotto solo 
perché Microsoft ha *dovuto* mettere una patch al suo (per incapacità ed 
imposizione) mi fa andare in bestia!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Mi sono sfogato! Ora sono più tranquillo :-)))))


 Atipower?, ZERO? Riccardo?
Assolutamente *quasi* si.
Penso che si possa considerare definitivo (leggere reply a ZER0 per le sue 
obiezioni)
Però ho tolto i setTimeout (tanto con IE riesco a fregarla comunque) ed 
aggiunto solo due finezze (tanto per avere l'ultima parola :-)))
- Chiudo la figlia quando viene chiusa la padre (onUnload)
- Uso una funzione sola.
Che non è " 'na sola " alla romana maniera... è unica!
Quando il parametro è "true" la modale viene aperta, se non è definito (false 
per default) viene spippato il focus.
<HTML>
<HEAD>
	<TITLE>Window Focus - Carena</TITLE>
<SCRIPT>
<!--
var modale;
function fmod(apri)
	{
	if (apri)
		modale=window.open('pagina.html','finmod','width=300,height=200,s
tatus=no,menubar=no,resizable=no,scrollbars=no')
		else
		if(modale&&!modale.closed){modale.focus()}
	}
//-->
</SCRIPT>
</HEAD>
<BODY onFocus="fmod()" 
onUnload="modale&&!modale.closed?modale.close():null">
<FORM><INPUT TYPE="button" VALUE="clicca" onClick="fmod(true)"></FORM>
</BODY>
</HTML>
Attenzione alla riga "modale=..." che è unica fino a "scrollbars=no')


aggiunto solo due finezze (tanto per avere l'ultima parola :-)))
ehm senza diventare maniaco pur di affondarlo, (lo dico piano che'
ZER0 non senta...[ ZER0, scherzo neh?])
Mi sembra che sia ancora un po' instabile: mi passa frequentemente in
secondo piano con IE e non torna più su neppure se riclicco sul
pulsante.
Supera il ribrezzo e chiedi indietro al tuo amico il SetTimeout ;)
brutto, usato,  sbeffeggiato, por fioeul (povero figlio), ma che fa il
suo dovere...
A parte gli scherzi, sul serio, su 10 i normali cliccate sul document
dell' opener, mi passa in secondo piano con troppa facilità rispetto
alla tua esigenza (provato con  IE5 win 98SE) per poterlo considerare
assestato
setTimeout('Ciao',40) 

va bene me ne passate uno di setTimeout?
uno solo!
se lo aggiungo allo script di Riccardo mi sembra assai più stabile
fatevene una ragione! ;)
<HEAD>
	<TITLE>Window Focus -Riccardo con piccola intrusione di
Carena</TITLE>
<SCRIPT>
<!--
var modale;
function fmod(apri)
	{
	if (apri)
modale=window.open('pagina.html','finmod','width=300,height=200,status=no,menubar=no,resizable=no,scrollbars=no')
		else
if(modale&&!modale.closed){setTimeout('modale.focus()',40)}
	}
//-->
</SCRIPT>
</HEAD>
<BODY onFocus="fmod()" 
onUnload="modale&&!modale.closed?modale.close():null">
<FORM><INPUT TYPE="button" VALUE="clicca" onClick="fmod(true)"></FORM>
</BODY>
</HTML>
questo non conta:
SetTimeout('Ciao',40)

uno solo!
rimannaggia, se si chiude prima la figlia rimane sempre un errore in
IE, che evitavo col secondo esecrato timeout nel body onfocus
Bon, 
o secondo setT 
o showModal
o altra idea di qualcuno
buonanotte, mi taccio, promesso

 Bon, 
Io ho provato solo sotto IE4 di Win98 installato su Win95 con le Winsock2 (*)
Comunque IE4.
Ciao, Riccardo
p.s.
Si sono pazzo, ma mi piace Win95, e per fargli digerire ASP ho dovut fare tutto 
quel casino :-)))


 ZER0 non senta...[ ZER0, scherzo neh?])
'Azz, ma tu sei più sadico di loro due messi insieme eh? :-)))


 tutti un po' utili..)
Ma noi non si litiga, si discute. Siamo o non siamo in un "gruppo di
discussione"? :)

 suo dovere...
Il suo dovere non e' certo quello di aprire una finestra modale, quello lo
fa la showModalDialog. ;)

 Mi sono sfogato! Ora sono più tranquillo :-)))))
Anche io. :D

 suo dovere...
Il suo dovere non e' certo quello di aprire una finestra modale, quello lo
fa la showModalDialog. ;)

 Mi sono sfogato! Ora sono più tranquillo :-)))))
Anche io. :D

>'Azz, ma tu sei più sadico di loro due messi insieme eh? :-)))
%)
da cosa lo hai capito?


ok, mi arrendo sulla modale, ma in un sito che faccia uso di più
finestre con relazioni non univoche tra padri e figlie, (una stessa
finestra nata come figlia di A deve potere essere aggiornata da B e
consentire comunque di avere una history navigabile [e riconoscere
come opener nel corso della navigazione quindi varie finestre]) mi
sembra che il discorso possa rimanere valido per consentire a IE di
attribuire il focus.
Tra l' altro con molto dolore ho visto che il trucchetto setT è usato
anche da altri, piu' oltranzisti però, consigliano 10 ms al posto dei
miei empirici 40
 ho fatto un giretto su 
deja.com/usenet
Quindi, da testardo subalpino,  faccio tesoro delle osservazioni di
Zer0 e Riccardo, ma se mi pungono le zanzare, o mi serve una serata
alla grande, o mi sembra che il focus di IE proprio non funzioni, non
lo diro' a ZER0, ma ...
 :D
ciao a tutti e grazie