se provi a chiudere la finestra subito dopo la chiamata a print (), potrebbe chiuderla immediatamente e print () non funzionerà. Questo è quello che non dovresti fare :
window.open();
...
window.print();
window.close();
Questa soluzione funzionerà in Firefox, perché alla chiamata print (), attende che la stampa sia terminata, quindi continua a elaborare javascript e chiude () la finestra. IE fallirà con questo perché chiama la funzione close () senza aspettare che la chiamata print () sia fatta. La finestra popup verrà chiusa prima che la stampa sia terminata.
Un modo per risolverlo è utilizzare l'evento "onafterprint" ma non te lo consiglio perché questi eventi funzionano solo in IE.
Il modo migliore è chiudere la finestra popup una volta chiusa la finestra di dialogo di stampa (la stampa è terminata o annullata). In questo momento, la finestra popup sarà focalizzata e potrai utilizzare l'evento "onfocus" per chiudere la finestra popup.
Per fare ciò, inserisci questo codice javascript incorporato nella tua finestra popup:
<script type="text/javascript">
window.print();
window.onfocus=function(){ window.close();}
</script>
Spero che questo hepls ;-)
Aggiornare:
Per i nuovi browser Chrome potrebbe chiudersi troppo presto, vedere qui . Ho implementato questa modifica e funziona per tutti i browser attuali: 2/29/16
setTimeout(function () { window.print(); }, 500);
window.onfocus = function () { setTimeout(function () { window.close(); }, 500); }