si intenta cerrar la ventana justo después de la llamada a print (), puede cerrar la ventana inmediatamente y print () no funcionará. Esto es lo que no debes hacer :
window.open();
...
window.print();
window.close();
Esta solución funcionará en Firefox, porque en la llamada print (), espera hasta que se imprime y luego continúa procesando javascript y cierra () la ventana. IE fallará con esto porque llama a la función close () sin esperar a que finalice la llamada a print (). La ventana emergente se cerrará antes de que finalice la impresión.
Una forma de resolverlo es utilizando el evento "onafterprint", pero no se lo recomiendo porque estos eventos solo funcionan en IE.
La mejor manera es cerrar la ventana emergente una vez que se cierra el cuadro de diálogo de impresión (la impresión está terminada o cancelada). En este momento, la ventana emergente se enfocará y puede usar el evento "onfocus" para cerrar la ventana emergente.
Para hacer esto, simplemente inserte este código incrustado de JavaScript en su ventana emergente:
<script type="text/javascript">
window.print();
window.onfocus=function(){ window.close();}
</script>
Espero que esto ayude ;-)
Actualizar:
Para los nuevos navegadores Chrome, es posible que se cierre demasiado pronto, consulte aquí . Implementé este cambio y funciona para todos los navegadores actuales: 29/2/16
setTimeout(function () { window.print(); }, 500);
window.onfocus = function () { setTimeout(function () { window.close(); }, 500); }