Làm cách nào để đóng cửa sổ sau khi in trong Javascript?

Tôi có một tab đang mở khi người dùng nhấp vào nút. Trên


0, tôi có hộp thoại in, nhưng người dùng hỏi tôi rằng liệu sau khi nó gửi đến máy in để in, tab có thể tự đóng không. Tôi không chắc liệu điều này có thể được thực hiện. Tôi đã thử sử dụng

1, nhưng đó không phải là một khoảng thời gian xác định vì người dùng có thể bị phân tâm và phải mở lại tab. Có cách nào để thực hiện điều này?

Giải pháp tốt nhất

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, vì trong lệnh gọi print(), nó đợi cho đến khi in xong rồi tiếp tục xử lý javascript và đóng() cửa sổ. IE sẽ thất bại với điều này vì nó gọi hàm close() mà không đợi lệnh gọi print() hoàn thành. Cửa sổ bật lên sẽ được đóng lại trước khi in xong

Một cách để giải quyết vấn đề này 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 đóng hộp thoại in (in xong hoặc bị hủy). Tại thời điểm này, cửa sổ bật lên sẽ được lấy nét 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


Hi vọng điêu nay co ich ;-)

Cập nhật

Đối với các trình duyệt chrome mới, nó vẫn có thể đóng quá sớm. Tôi đã triển khai thay đổi này và nó hoạt động với tất cả các trình duyệt hiện tại. 29/2/16

Sự kiện afterprint được kích hoạt sau khi tài liệu được liên kết đã bắt đầu in hoặc bản xem trước bản in đã bị đóng

Các sự kiện beforeprintafterprint cho phép các trang thay đổi nội dung của chúng trước khi bắt đầu in (ví dụ: có thể xóa biểu ngữ) và sau đó hoàn nguyên những thay đổi đó sau khi in xong. Nói chung, bạn nên sử dụng CSS theo quy tắc, nhưng có thể cần sử dụng các sự kiện này trong một số trường hợp

Sử dụng tên sự kiện trong các phương thức như addEventListener() hoặc đặt thuộc tính trình xử lý sự kiện

addEventListener('afterprint', (event) => { });
onafterprint = (event) => { };

Một Event chung chung

Sử dụng addEventListener()

window.addEventListener('afterprint', (event) => {
  console.log('After print');
});

Sử dụng thuộc tính trình xử lý sự kiện

window.addEventListener('afterprint', (event) => {
  console.log('After print');
});
0

window.onafterprint = (event) => {
  console.log('After print');
};

Sự chỉ rõ

Bảng BCD chỉ tải trong trình duyệt có bật JavaScript. Bật JavaScript để xem dữ liệu

  • sự kiện liên quan. beforeprint

Tìm thấy một vấn đề nội dung với trang này?

  • Chỉnh sửa trang trên Github
  • Báo cáo vấn đề nội dung
  • Xem nguồn trên GitHub
Bạn muốn tham gia nhiều hơn?

Trang này được sửa đổi lần cuối vào ngày 9 tháng 9 năm 2022 bởi những người đóng góp MDN

Làm cách nào để đóng hộp thoại in trong JavaScript?

reload() đóng nó, nhưng nó tải lại trang.

Close() làm gì trong JavaScript?

Phương thức close() đóng cửa sổ .

Cửa sổ có thể tự đóng JavaScript không?

đóng() hoặc tự. Thoát(). Vì cửa sổ con được mở bằng tập lệnh nên window. open(); . .

Cửa sổ print() trả về cái gì?

Phương thức print() in nội dung của cửa sổ hiện tại .