Newsgroup: it.comp.lang.javascript
Titolo: Mi vergogno .... :-)

Ma non riesco a ricordare (né a trovare uno dei tanti post che credevo di aver salvato) che consente di verificare se una finestra aperta con window.open è gia aperta :-(
Does anybody help me?
Ciao, Riccardo
-----------------------------------------------------------------------
http://www.bottegasanlorenzo.it
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
-----------------------------------------------------------------------
.
.
.
.
.
 . . . . . . I Fantastici 4 stanno arrivando . . . . . . manca poco! . . . . .

 Ma non riesco a ricordare (né a trovare uno dei tanti post che credevo di
aver salvato) che consente di verificare se una finestra aperta con
window.open è gia aperta :-(
Don't worry... ;)
handle=open(...)
if(!handle.document)
    alert("chiusa")
CiaoooooooooooooooooooooooooooooooaiC.
Darius.

Sorry: č meglio fare il controllo su window anziché su document, ché a
Netscape con document non piace... :)
handle=open(...)
if(!handle.window)



Riccardo, pronta la carriola col sale?  ;)
Se non sbaglio quando vuoi lanciare l' apertura della finestra devi
anche settare in precedenza il nome dell' handler a null
 var win= null
(fuori funzione)
win = window.open eccetera
in seguito ilcontrollo dovrebbe essere
if(win&&win.open&&!win.closed)  
Mi dici poi se ti funziona?

On Tue, 01 Aug 2000 19:34:12 GMT, 
p.ca...@toglimitiscalinet.it
 wrote:
dimenticavo una cosa 
Qualora tu aprissi sistematicamente con un unico handler ma con nome
diverso (l'equivalente di target html), il browser non fa una piega e
aprirebbe una finetsra  (o vi indirizzerebbe se già aperta) la pagina
da caricare discriminando in base al nome  specifico piuttosto che
sull' handler specifico
win= window.open('url','nome')
win= window.open('url','altronome')
apri due finestre 
se ripeti l'istruzione magari su un altro link che chiama la medesima
funzione passando il nome del target
win= window.open('url','nome'),
il browser imperturbabile ti aprirà la pagina sulla prima senza creare
doppioni o confondersi circa la finestra di destinazione da utilizzare




 [....]
Grazie!!!


     alert("chiusa")
Tutto qui? Se vi dicessi che script di una decina di righe mi ricordavo e andavo a cercare....
Il problema era solo ridargli il focus, ed avevo pure risolto (stendiamo un velo pietoso sulla soluzione), ma.....
....mi cospargo il capo di cenere e vi sparo una domandina che mi č venuta adesso adesso:
Se volessi *impedirne* la chiusura? Naturalmente di script signed non se ne parla neppure, quindi la crocetta rimane. Potrei intercettare "onUnload" in uno dei frames (dimenticavo: la window č un
frameset). Come annullare il click sulla crocetta?
Ci penso anch'io e vi lascio con questa bella domandina.


 Se la riapri con lo stesso  nome.....
Grazie della risposta, ma dal momento in cui l'ho aperta al momento in cui voglio ridargli il focus dentro alla finestra sono successe tante cose, compreso un login che si riflette sulla pagina
"opener".
Se la riapro.... semplicemente perdo tutto perché ci vado a riscrivere il frameset pulito pulito :-)


 frameset). Come annullare il click sulla crocetta?
Annullare la chiusura di una finestra è un lusso riservato solo agli utenti
che hanno aperto una finestra.
Sarebbe abbastanza triste una finestra che allegramente ti dice "oggi non ho
voglia di chiudermi, anzi ti apro altre 100 finestre sul computer e non
potrai chiudere neanche quelle"... :)
In ogni caso, quello che si può fare (con JavaScript si può tutto e il
contrario di tutto :) è sfruttare l'alert() che ti apre di fatto una
finestra di dialogo modale, il che vuol dire che devi prima chiudere quella
per poter chiudere la finestra madre.
Se chiami tanti alert() in fila, ad esempio con un ciclo di for(), la "X"
per chiudere la finestra non sarà premibile, ma intanto nemmeno il tuo
script è in grado di andare avanti... :)
A quel punto funzionerà solo un CTRL-ALT-CANC e un kill task per chiudere la
finestra (ricordando che con IE4 nel frattempo va a monte anche la
trailbar...)
Alla prox.
Bye.
Ðarius.

 Ma non riesco a ricordare (né a trovare uno dei tanti post che credevo di aver salvato) che consente di verificare se una finestra aperta con window.open è gia aperta :-(
Mi rimangio tutto per ora e mi scrollo il sale di dosso :-)
Sottintendevo, ma non era chiaro lo riconosco, che: "al momento del controllo non so ancora se la finestra è già aperta". Insomma l'oggetto "NuovaFinestra" al primo click non esiste ancora, quindi "is
not defined".
Naturalmente il punto cruciale è dare focus() alla finestra con una stessa funzione ed uno stesso link, solo che al primo focus *se la window non c'è* devo aprirla **una*volta*per*tutte**
E fatto questo, cercare un metodo per **impedirne** la chiusura non è necessario ma sarebbe di una comodità estrema!! :-)))
Tutto questo panegirico è voluto dal fatto che la finestra viene aperta con un click in un'animazione FLASH, quindi non si può neanche usare un'automatismo (tipo onLoad nel <BODY> ) tipico di HTML+JS,
e che da quella finestra si deve comandare la finestra "opener" aggiornando alcuni frames.
Bel casino eh? :-))))
Nessuno dei due metodi proposti funziona a meno di non forzare l'apertura (che si tradurrebbe in riapertura al secondo click, cosa da evitare come già risposto a Stefano).
Tutti e due generano un errore se la finestra non è stata aperta almeno una volta (che sia stata chiusa è ininfluente, l'oggetto rimane comunque.)
La domanda è ancora senza risposta, resta valida la soluzione che ho trovato da me (in pratica un flag nel frameset "opener" che imposto all'avvio e poi aggiorno e controllo opportunamente).


 [....]
Lo immaginavo, ma speravo in una soluzione a me ignota :-(
Ed un modo per condizionare la chiusura ad un particolare stato (variabile, ecc) della finestra opener? Ti viene in mente?
Insomma il fatto è che quando uno clicca su X già chiude, e non ho trovato metodo che annulli, sia pur chiedendo conferma all'utente, la chiusura.
O che consenta di far dipendere l'effetto di X da una decisione (consapevole o inconsapevole dell'utente).
Quel che cerco è un metodo simile a quello che usiamo nei form: onSubmit="return controllaform()".
Che casino!
Tutti cercano di chiudere allegramente la finestra principale ed io mi trovo a NON POTER chiudere una window.open!
Ma si può essere più sfigati!?!?!?!!! :-))))


 Ed un modo per condizionare la chiusura ad un particolare stato
(variabile, ecc) della finestra opener? Ti viene in mente?
Purtroppo no, sorry... annullare la chiusura di una finestra con un "return
funz()" non è possibile in quanto, come ti ripeto, si tratta di un'azione
affidata completamente all'arbitrio dell'utente...
Un'idea alternativa però ci sarebbe: usa un bel layer che sembri una
finestra, con tanto di pulsante "X" di chiusura etc, e lavora su quella,
così puoi liberamente programmarne apertura e chiusura alle condizioni che
meglio ti piaciono... :)
Alla prox.
Bye.
Ðarius.

 La domanda è ancora senza risposta, resta valida la soluzione che ho
trovato da me (in pratica un flag nel frameset "opener" che imposto
all'avvio e poi aggiorno e controllo opportunamente).
A me sfugge ancora il problema fondamentale (oddio, nemmeno piu' di tanto:
Il problema e' che usi Flash! ;)) Scherzo, suvvia..) puoi chiarirmi le idee?
P.S.
Ho visto che mi hai mandato due mail, ma ancora non sono "effettivamente"
tornato.
Il PC a casa e' ancora mezzo imballato, e l'altro mezzo abbarbicato su una
libreria. E i lavori per mettermi la presa del telefono vicino al PC me li
fanno a fine Agosto. Gli ho dato un occhiata fugace ieri a lavoro, vedo
intanto di raccattarti il codice e la docs che mi hai chiesto.

Mi rimangio tutto per ora e mi scrollo il sale di dosso :-)
Ehi il sale non era da versare sulle ferite, poveretto (sospettavo
l'equivoco visto il gatto a nove code...) ma simbolo di saggezza...
però scusa , il settare la variabile dell' handler sia pure a null
doveva servire proprio a evitare indefined... mi pareva servisse allo
scopo.
mumble
e provare settare l' handler  a false sempre come  variabile globale e
e fare If (!win)    eh?

 e fare If (!win)    eh?
Non mi convince, ma ci provo. Ti faccio sapere.
