Newsgroup: it.comp.lang.javascript
Titolo: Aprire con IE una nuova finestra in maniera che sia sempre in primo piano (ma non modale)

Vorrei avere la possibilità di aprire una nuova finestra in maniera tale che
risulti sempre in primo piano. Si tratta infatti di una finestra che risulta
una sorta di telecomando per la finestra madre.
Sottolineo che devo trovare un meccanismo che funzioni con IE4.01.
Avete qualche idea?
Grazie per l'attenzione
Ciao
Marco

una sorta di telecomando per la finestra madre.
Forse ho qualcosa che fa per te.
Nell'<HEAD> di tutte le pagine metti:
<SCRIPT LANGUAGE="JavaScript">
<!-- //
window.name
="finestra";
// -->
</SCRIPT>
Imposta poi un js esterno valido per tutte le pagine:
<SCRIPT SRC="
http://www.iltuoURL.com/aprimenu.js
"></SCRIPT>
Il file aprimenu.js lo puoi configurare facilmente a seconda delle
dimensioni desiderate per la finestrella che ti fa da "telecomando":
function apri() {
        searchWin =
window.open('
http://www.iltuoURL.com/menu.htm
','newWin','toolbar=no,directories=no,menubar=no,scrollbars=yes,width=200,height=500,resizable=no');
}
Poi imposta il bottone o il link da attivare per richiamare il menu:
<A HREF="javascript:apri()">Apri il menu</A>
Nel file menu.htm imposti il target e se vuoi questa "trovata": una
volta che si e' cliccato su un link e il focus passa ad un altro
oggetto, la finestra telecomando si chiude da sola:
<A HREF="
http://www.tuoURL.com/tuolink.htm
" TARGET="finestra"
OnBlur="window.close()">Tuo Link</A>
Ciao, Ghizza.
--
ghi...@iamschitarra.italia.to
  -  
http://go.to/ghizza
http://www.iamschitarra.com
  -  
http://iamschitarra.italia.to
"Strangers passing in the street
By chance two separate glances meet
And I am you and what I see is me"

Sottolineo che devo trovare un meccanismo che funzioni con IE4.01.
[snip]
Questo funziona di certo sia con IE che con NN:
      function checkFocus()
      {
        if (document.all)
        {
          setTimeout('document.elemento.focus()',40);
        }
        else
        {
          document.nomeElemento.focus();
        }
      }
infila:
  name = 'nomeElemento' onBlur = "checkFocus()"
come proprieta' dell'elemento della finestra che vuoi tenere a fuoco
(se e' un form, avrai 'nomeForm.nomeElemento') e hai risolto tutti i
tuoi problemi.
Oppure sostituisci nella funzione 'document.elemento.focus()' con:
    self.focus()
e imposti:
    <BODY onBlur = 'checkFocus()'>
e il gioco e' fatto.
La setTimeout e' necessaria, poiche' IE al di sotto dei 4 centesimi di
secondo non ripristina il focus, anche se richiamato da un onBlur
(penso te ne sia accorto ;-) )
Spero di esserti stato utile
Buona serata
BePPe
<<CyberBePPe>>
Junior Web Programmer
City: Torino - Country: I EU
e-Mail: 
Cyber...@freemail.it

E' sufficiente aggiungere nel body della pagina che apri nalla nuova
finestra <body onblur="self.focus()">
Ciao
Giuseppe Di Natale
gdin...@jsdir.com
http://www.jsdir.com

 wrote:
[snip]
Greetings


Vi ringrazio per le vostre risposte. Vi farò sapere sui risultati ottenuti.
Ciao
Marco

finestra <body onblur="self.focus()">
Con IE un semplice 'self.focus()' non funziona!
Se clicchi al difuori di tale finestra, IE ha un comportamento instabile:
la prima volta ti tiene il fuoco, dalla seconda o terza volta di seguito
che clicchi al difuori, lo perde! ...misteri di MS...
Un onBlur dopo un time-out di almeno 4 centesimi di secondo:
<BODY onBlur=''setTimeout('self.focus()',40)''>
ha piu' possibilita' di funzionare, ma e' probabilmente meglio usare la
funzione 'checkFocus()' del mio precedente post che gira sia su NN che su
IE.
Buona serata


A me onestamente non è mai successo, che versione di IE usi?


Per prima cosa grazie!!!
Purtroppo però ci sono dei problemi:
1. Riguardo alla soluzione di CyberBePPe e Giuseppe Di Natale:
E' vero funziona ma di fatto blocca qualsiasi operazione sulle altre
finestre che non riescono ad avere il fuoco; non è quindi possibile inserire
valori o... L'idea è che questa sorta di telecomando sia visibile, in
un'altra finestra, ma che mi permetta di lavorare agevolmente sulla pagina
che pilota, che è una form di inserimento.
2.  Riguardo alla soluzione di Ghizza:
E' interessante ma cerco un meccanismo come quello spiegato sopra e non mi
sembra bello, nel mio caso, chiudere il telecomando quando si perde il
fuoco.
Grazie comunque. Se aveste altre idee o se la mia interpretazione non fosse
corretta fatemelo sapere.
Ciao
Marco

A me onestamente non è mai successo, che versione di IE usi?
Stesso problema su TUTTE le versioni di IE dalla 4.0 alla 5.5,
non ancora testato sulla 5.5 SP1 (ma non penso lo correggano,
non l'han fatto finora!).
Fai attenzione, che' e' un bug abbastanza subdolo: se imponi un semplice
onBlur = self.focus()
sul body o su qualsiasi elemento della finestra pop-up che vuoi
mantenere in primo piano, la prima volta che clicchi al difuori
di essa torna tranquillamente a fuoco, ma se provi a farlo due
volte di seguito (o piu' in alcuni casi) la tua cara finestrella
perde il fuoco, senza pieta'!
E' un bug abbastanza noto, la cui soluzione e' ripristinare il
focus della finestra quando siano passati almeno 4 centesimi di
secondo dalla perdita del fuoco (l'ho pluri-testato e questo e'
il limite minimo piu' che sufficiente):
onBlur = setTimeout('self.focus()',40)
Secondo me, tale comportamento non e' neanche un bug, ma
dev'essere voluto dai cari tecnici Microsoft, affinche' si sia
portati ad utilizzare la funzione 'openModalDialog' che hanno
inserito nel loro JScript proprietario (quindi non standard e non portabile).
Con essa apri una bella finestra modale che sta perfettamente in
primo piano, peccato che sia praticamente impossibile passare
dei parametri tra tale finestra modale e la finestra madre che l'ha aperta!
Buona giornata
BePPe
------------------------------------------
Posted via web with GlobalNews
The first european Free Usenet Web Portal 
www.globalnews.it
------------------------------------------


 dei parametri tra tale finestra modale e la finestra madre che l'ha
aperta!
Giustamente, e' una finestra modale. :D
Hai presente il significato di "modale", no?
Inoltre puoi benissimo passare dei parametri alla finestra modale.
Il punto e' che non puoi *accedere* alla pagina genitrice in nessun modo,
finche' la modale e' attiva.
Ma, cosa ancor piu' rognosa, non puoi caricare altri URL all'interno di una
modale. Ti apre una nuova finestra del browser.
Questo perche' in realta' la finestra creata con la showModal, non e' una
finestra del browser in senso lato, quanto del Sistema Operativo.. Cioe',
credo che IE quando crea una modale lo faccia con le API di winzoz, e non
secondo la struttura classica per aprire le cosiddette finestre di "pop-up"
del browser.

Inoltre puoi benissimo passare dei parametri alla finestra modale.
[snip]
Visto che non potevo caricarci altri URL, ho desistito dal provarci.
Buona serata
