jeśli spróbujesz zamknąć okno zaraz po wywołaniu print (), może ono natychmiast zamknąć okno i print () nie zadziała. Tego nie powinieneś robić :
window.open();
...
window.print();
window.close();
To rozwiązanie zadziała w Firefoksie, ponieważ po wywołaniu print () czeka na zakończenie drukowania, a następnie kontynuuje przetwarzanie javascript i zamyka () okno. IE nie powiedzie się z tym, ponieważ wywołuje funkcję close () bez czekania na wykonanie wywołania print (). Wyskakujące okienko zostanie zamknięte przed zakończeniem drukowania.
Jednym ze sposobów rozwiązania tego problemu jest użycie zdarzenia „onafterprint”, ale nie polecam go, ponieważ te zdarzenia działają tylko w IE.
Najlepszym sposobem jest zamknięcie wyskakującego okienka po zamknięciu okna drukowania (zakończeniu lub anulowaniu drukowania). W tym momencie wyskakujące okienko będzie skoncentrowane i możesz użyć zdarzenia „onfocus” do zamknięcia wyskakującego okienka.
Aby to zrobić, po prostu wstaw ten osadzony kod javascript w wyskakującym okienku:
<script type="text/javascript">
window.print();
window.onfocus=function(){ window.close();}
</script>
Mam nadzieję, że to działa ;-)
Aktualizacja:
W przypadku nowych przeglądarek Chrome może nadal zostać zamknięty zbyt wcześnie, zobacz tutaj . Zaimplementowałem tę zmianę i działa ona dla wszystkich obecnych przeglądarek: 29.02.2016
setTimeout(function () { window.print(); }, 500);
window.onfocus = function () { setTimeout(function () { window.close(); }, 500); }