Tôi cần thực hiện doSomethingFunc
, khi xảy ra afterPrint. Mã của tôi hoạt động tốt trên tất cả các trình duyệt, ngoại trừ các phiên bản Safari hiện tại (Safari 10.1 trên OSX và Trình duyệt Safari từ iOS 10.3). Dường như các trình nghe sự kiện (ít nhất là để in) không được gọi cho hai trình duyệt này.Cửa sổ Safari.match Trình xử lý đa phương tiện không được gọi là
const mediaQueryPrint = window.matchMedia('print');
mediaQueryPrint.addListener((mql) => {
if (!mql.matches) {
setImmediate(doSomethingFunc);
}
});
window.print();
Mã trên hoạt động hoàn hảo với OSX Safari 9.1.2 và Safari từ iOS 10.2. Nhưng không phải với các phiên bản hiện tại.
Có ai đó nhận thấy điều gì đó tương tự không? Hoặc tôi có phải cải thiện mã của mình cho các phiên bản Safari hiện tại không?
Tôi đoán là, đây là lỗi Safari, vì có ghi chú tương ứng trong Khả năng truy cập chương Safari 10.1 changelog.
Có Tôi đã trải nghiệm điều tương tự - Hóa ra (trong trường hợp của tôi) rằng nó kích hoạt trình xử lý tốt nếu bản in nằm trong 1 trang. Nếu bản in nhiều hơn một trang, nó sẽ bị bỏ qua hoàn toàn. Tôi chưa tìm thấy bất kỳ báo cáo lỗi nào về nó. – Rolchau
vâng, tôi đoán tính năng này không được sử dụng thường xuyên. Tôi sẽ rất vui, nếu bạn đã viết một báo cáo lỗi trên bugreport.apple.com. Tôi làm giống vậy. Quả táo đáng buồn là rất không minh bạch với các lỗi của nó, vì vậy chúng tôi không biết nếu táo nhận thấy nó đã. – m4lt3