Tôi có một tab đang mở khi người dùng nhấp vào nút. Trên
window.print[];
window.onfocus=function[]{ window.close[];}
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
window.print[];
window.onfocus=function[]{ window.close[];}
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
window.print[];
window.onfocus=function[]{ window.close[];}
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 beforeprint
và afterprint
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'];
}];
0window.onafterprint = [event] => {
console.log['After print'];
};
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
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