2010-01-18 12 views
5

Quando l'utente fa clic su un collegamento ipertestuale, sto aprendo una finestra popup che scarica un file. Pubblica il download, mostra la finestra di dialogo apri/salva. Voglio chiudere la finestra popup una volta che il download è terminato (quando all'utente viene richiesto di salvare il file). Ho provato il metodo window.close, ma non funziona in quanto il contesto non è la finestra popup ma la finestra di dialogo open/save.Chiudi la pagina popup del browser dopo aver scaricato il file

risposta

5

Penso che non sia possibile controllarlo in modo programmatico. Questo è un elemento specifico del browser in cui alcuni browser ti consentono di selezionare una casella di controllo per chiudere la finestra e così via.

+0

Sì. Alcuni utenti preferiscono che la finestra si aggiri, ad es. in modo che possano eseguire "Esegui" da esso dopo il download; che come preferiscono e non dovresti cercare di interferire con quello (non che tu possa farlo). Tutti gli altri a cui non piace quel comportamento spacchettano la casella per farlo andare via. – bobince

1

I browser hanno l'abitudine di decidere autonomamente se provare a scaricare un file o aprirlo all'interno della finestra del browser, a seconda del browser utilizzato, dei plug-in e delle impostazioni del server. Sembra che potresti aprire il link in una nuova finestra, come se il browser aprisse il file anziché scaricarlo, quindi il browser ha optato per il download. Ciò lascia all'utente un file scaricato e una finestra vuota su cui non hai alcun controllo.

Per forzarlo a scaricare, dovresti essere in grado di impostare l'intestazione Content-Type per la destinazione del collegamento a application/force-download. Il modo in cui lo fai dipenderà dalla tua configurazione e dal fatto che il file venga scaricato direttamente (nel qual caso sarà un'impostazione del server) o tramite PHP o .Net (nel qual caso è facile impostare l'intestazione in modo programmatico). Assicurarsi inoltre che il collegamento ipertestuale non abbia un attributo target="_blank" che apre il collegamento in una nuova finestra.

+0

Grazie Karl. Il problema non è scaricare il file ma chiudere la finestra popup dopo il download. – Ankit

+1

Con l'intestazione Content-Type corretta e nessun target = "_ blank" (o window.open) quindi il popup non dovrebbe nemmeno aprirsi in primo luogo. –

+0

Voglio aprire il popup e mostrare un messaggio personalizzato in quella finestra. Ma una volta completato il download, voglio chiudere quella finestra. – Ankit

2

si può fare una cosa:

dopo il "codice di scrittura file nel servlet o montanti azione utilizzo"

Fase 1: lo chiamano "response.flushBuffer();" Fase 2: chiamare response.sendRedirect ("close.htm")

dove close.htm è:

<html> 


<script> 


window.close(); 

</script> 

</html> 

L'unico problema è identificare se il download è completato. Non penso che ci sia un modo possibile per farlo. Ad ogni modo è possibile continuare a tenere il pop-up aperto fino al completamento del download. Puoi semplicemente chiudere il pop-up una volta avviato il download. Usando sotto JavaScript, no?

pop_up= window.open("", "PopUpName"); 
pop_up.document.write('POPUP TEXT');  
pop_up.close(); 
0

È la funzionalità Browser, è possibile modificare le impostazioni del browser per quello. Non dovresti andare per la programmazione. Di default Se si scarica il file in firefox si richiede il salvataggio, ma in crome non è richiesto. È necessario modificare le impostazioni del browser.

Problemi correlati