nếu bạn cố gắng đóng cửa sổ ngay sau lệnh gọi print (), nó có thể đóng cửa sổ ngay lập tức và print () sẽ không hoạt động. Đây là điều bạn không nên làm :
window.open();
...
window.print();
window.close();
Giải pháp này sẽ hoạt động trong Firefox, bởi vì trong lệnh gọi print (), nó sẽ đợi cho đến khi in xong và sau đó nó tiếp tục xử lý javascript và đóng () cửa sổ. IE sẽ không thực hiện được điều này vì nó gọi hàm close () mà không đợi lệnh print () được thực hiện. Cửa sổ bật lên sẽ bị đóng trước khi in xong.
Một cách để giải quyết nó là sử dụng sự kiện "onafterprint" nhưng tôi không khuyên bạn nên sử dụng nó vì những sự kiện này chỉ hoạt động trong IE.
Cách tốt nhất là đóng cửa sổ bật lên sau khi hộp thoại in đóng (in xong hoặc hủy). Tại thời điểm này, cửa sổ bật lên sẽ được tiêu điểm và bạn có thể sử dụng sự kiện "onfocus" để đóng cửa sổ bật lên.
Để thực hiện việc này, chỉ cần chèn mã nhúng javascript này vào cửa sổ bật lên của bạn:
<script type="text/javascript">
window.print();
window.onfocus=function(){ window.close();}
</script>
Hy vọng điều này hepls ;-)
Cập nhật:
Đối với các trình duyệt chrome mới, nó có thể vẫn đóng quá sớm, hãy xem tại đây . Tôi đã triển khai thay đổi này và nó hoạt động cho tất cả các trình duyệt hiện tại: 29/2/16
setTimeout(function () { window.print(); }, 500);
window.onfocus = function () { setTimeout(function () { window.close(); }, 500); }