2014-05-20 13 views
10

Khi trong webapp của chúng tôi, một cửa sổ phụ Chrome được khởi chạy, hoặc bằng cách window.open() hoặc bằng cách nhấp vào liên kết với target="_blank", trong cửa sổ phụ đó, cơ thể onload="window.print()" để tự động khởi chạy hộp thoại in và xem trước bản in, sau đó người dùng sẽ đóng cửa sổ in/subwindow thay vì nhấp hủy, cửa sổ chính sẽ được ẩn hoàn toàn. Cụ thể là:window.print() từ cửa sổ phụ Chrome - đóng, sau đó ngắt

  1. Không javascript sự kiện sẽ cháy
  2. Không liên kết đều có thể click
  3. nhấn F5 cho thấy spinner chút trong tab nhưng trang không bao giờ tải lại.
  4. Cửa sổ cha mẹ thực sự đã chết - tất cả những gì bạn có thể làm là đóng nó lại.

Nếu bạn nhấp vào hủy trên cửa sổ phụ (nơi xem trước bản in được khởi chạy qua window.print()) mọi thứ đều ổn. Nhưng nếu người dùng đóng cửa sổ, tất cả sự điên rồ sẽ xảy ra.

Đây là một lỗi được biết đến trong Chrome:

Có ai biết một workaround cho điều này?

+4

Xem bài đăng này. http://stackoverflow.com/questions/23071291/javascript-window-print-in-chrome-closing-new-window-or-tab-instead-of-cancel –

Trả lời

1

Thay vì sử dụng window.print(), chỉ cần đưa nội dung của bạn đến cửa sổ mới và sau đó gọi chức năng in như được đưa ra bên dưới, để in nội dung.

sau đây là một cuộc gọi chức năng nơi chúng tôi đã chuyển html bên trong của phần tử thông qua id của nó đến cửa sổ mới.

PrintContent(document.getElementById('div-content-id').innerHTML); 

function PrintContent(printableContent) { 
    var printWindow = window.open("", "Print_Content", 'scrollbars=1,width=900,height=900top=' + (screen.height - 700)/2 + ',left=' + (screen.width - 700)/2); 
    printWindow.document.write(printableContent); 
    printWindow.document.close(); 
    printWindow.focus(); 
    printWindow.print(); 
    printWindow.close(); 
    return false; 
} 

Tôi cũng gặp phải sự cố tương tự, nó phù hợp với tôi.

Các vấn đề liên quan