2012-12-20 37 views
6

Sto utilizzando window.open per aprire una finestra secondaria dalla finestra padre. Voglio che la finestra figlio rimanga in cima in modo che l'utente possa farvi riferimento mentre effettua una voce nella finestra principale. Può essere fatto? Al momento sto usando Firefox, ma sarebbe un vantaggio se funzionasse in tutti i browser.Come rendere la finestra figlio in primo piano?

+0

È possibile mettere a fuoco la nuova finestra, ma in seguito non sarà possibile digitare o eseguire operazioni nella finestra padre. –

+3

Che ne dici di usare un [popup div] (http://jqueryui.com/dialog/#default) invece di aprire una nuova finestra? – 3dgoo

+1

Questo è il meglio che puoi fare con windows: http://jsfiddle.net/DerekL/WFsyY/ –

risposta

1

Come sull'utilizzo di un popup div invece di apertura una nuova finestra?

+1

BOOM! Azzeccato. –

+2

Il problema con questo è che non è possibile spostare un popup HTML all'esterno della finestra genitore. – UrbKr

1

questo popup è anche buono: DOMWindowDemo.

+0

http://stackoverflow.com/questions/how-to-answer –

+0

Ho intenzione di fare +1 su questo perché so che un giorno tornerà utile, anche se nessuno di loro è quello che avevo in mente per questo compito. –

0

sì, si può fare questo da questo codice si dispone di dare onBlur = "self.focus()" nel corpo per la finestra secondaria

//Parent page... 
    <html> 
     <body> 
     <a href="#" onClick="window.open('two.html','sdvwsv','width=200,height=200');">here...</a> 
     </body> 
    </html> 


    //Child page... 
     <html> 
      <body onBlur="self.focus();"> 
       here... 
       </body> 
      </html> 
+0

Questo non sembra funzionare come mi aspettavo, quando faccio di nuovo clic sulla finestra padre, la finestra figlio è persa. –

+0

qui il problema è di scrivere il contenuto da un figlio a un genitore così è sufficiente e quando non c'è genitore allora non esiste alcun figlio. –

0
<html> 
    <script language="JavaScript"> 
    <!-- 
    function openWin(){ 
     var myBars = 'directories=no,location=no,menubar=no,status=no'; 

     myBars += ',titlebar=no,toolbar=no'; 
     var myOptions = 'scrollbars=no,width=400,height=200,resizeable=no,top=10, left=10,'; 
     var myFeatures = myBars + ',' + myOptions; 
     var myReadme = 'This is a test.' 

     var newWin = open('', 'myDoc', myFeatures); 

     newWin.document.writeln('<form>'); 
     newWin.document.writeln('<table>'); 
     newWin.document.writeln('<tr valign=TOP><td>'); 
     newWin.document.writeln('<textarea cols=45 rows=7 wrap=SOFT>'); 
     newWin.document.writeln(myReadme + '</textarea>'); 
     newWin.document.writeln('</td></tr>'); 
     newWin.document.writeln('<tr><td>'); 
     newWin.document.writeln('<input type=BUTTON value="Close"'); 
     newWin.document.writeln(' onClick="window.close()">'); 
     newWin.document.writeln('</td></tr>'); 
     newWin.document.writeln('</table></form>'); 
     newWin.document.close(); 
     newWin.focus(); 
    } 
    --> 
    </script> 
    <body> 
    <form> 
     <b>Click the following button to open a new window: </b> 
     <input type=BUTTON value="Open" onClick='openWin()'> 
    </form> 
    </body> 
+0

Grazie per la risposta, ma questo non è quello che stavo per. Questo crea una nuova finestra con una casella di testo, ma si perde ancora quando faccio clic sulla finestra genitore. Voglio che la finestra figlio rimanga in cima in modo che l'utente possa farvi riferimento mentre effettua una voce nella finestra principale. –

0
<html> 
    <script language="JavaScript"> 
    <!-- 
    function openWin(){ 
     var myBars = 'directories=no,location=no,menubar=no,status=no'; 
     myBars += ',titlebar=no,toolbar=no'; 
     var myOptions = 'scrollbars=no,width=600,height=400,resizeable=no,top=10, left=10'; 
     var myFeatures = myBars + ',' + myOptions; 
     var newWin = open('test.html', '', myFeatures); 
     newWin.document.close(); 
     newWin.focus(); 
    } 
    --> 
    </script> 
    <body> 
    <form> 
     <b>Click the following button to open a new window: </b> 
     <input type=BUTTON value="Open" onClick='openWin()'> 
    </form> 
    </body> 
</html> 
    </html> 
+0

Grazie, ma non sono sicuro che tu capisca quello che voglio. "Desidero che la finestra secondaria rimanga in cima in modo che l'utente possa fare riferimento ad essa mentre effettua una voce nella finestra principale." –

0

Ho lottato con questo per molto tempo. Sembra essere un bug in FF, ma ho notato che dopo l'apertura della nuova finestra, se faccio clic su di esso, ottiene l'attenzione e arriva in cima. Comunque chiamare window.focus() su di esso non ha funzionato, quindi ho intuito che stava accadendo troppo presto.

Così il nuovo codice della finestra, in fondo alla pagina ho aggiunto

setTimeout(function(){window.focus()},100); 

Non si sente come solida pratica ma se avete bisogno di lavorare ... La 100mSec sembra essere la più basso che funzioni sul mio sistema.

+0

Inoltre, sembra funzionare solo se la richiesta open() viene eseguita da dietro un gestore di eventi. Inoltre, il gestore di eventi deve trovarsi su un oggetto che può accettare esso stesso la messa a fuoco, come input elemnts, ecc. –

+0

Anche se si associano event ahndlers a cose come div, non possono accettare il focus e quindi non funzionerà su di essi. –

Problemi correlati