2016-01-16 18 views
5

Tôi muốn in nội dung DIV của trang. Tôi làm là truy xuất nội dung của div bằng JS và chuyển nó tới cửa sổ mới obj mà tôi gọi .print(). Các nội dung văn bản và hình ảnh được hiển thị như vậy. Chỉ khi tôi thêm dòng này để truy lục nội dung divXem trước bản in trống sau khi thêm tham chiếu biểu định kiểu bên ngoài vào nội dung html in

<link href="myprintstyle.css" rel="stylesheet" type="text/css"> 

xem trước bản in trống. Tôi đã thử thêm các bảng định kiểu khác, cùng một kết quả. Bất kể tham chiếu sheet style nào tôi thêm vào để in nội dung html, cùng một trang xem trước kết quả -blank. đây là mã JS của tôi để in nội dung trang.

var printDivCSS = new String ('<link href="myprintstyle.css" rel="stylesheet" type="text/css">'); 
function Popup(htmldata) 
{ 
    var mywindow = window.open('test', 'eChallanReceipt', 'height=800,width=800,top=20;left=20'); 
    var str ="<html><head><title>test</title>"; 
    str+= "</head><body>"+ printDivCSS + htmldata+"</body></html>"; 
    mywindow.document.write(str); 
    mywindow.document.close(); // necessary for IE >= 10 
    mywindow.focus(); // necessary for IE >= 10 

    mywindow.print(); 
    mywindow.close(); 

    return false; 
} 

Vui lòng đề xuất một số sửa chữa. Tôi muốn tạo kiểu cho nội dung in. Trình duyệt: Chrome

Mã giống nhau đang hoạt động trong Mozilla. Nhưng trong Chrome, tôi đang đối mặt với vấn đề này.

+0

Tại sao thẻ jQuery? – j08691

Trả lời

0

CSS nên được gọi từ phần đầu của trang chứ không phải nội dung.

+0

Tôi đã thử thêm css vào đầu cũng vậy, vẫn không hoạt động – zee

+0

Khó mà nói mà không có một ví dụ trực tiếp. Tôi thấy vấn đề chỉ là Chrome. Bạn có thể kiểm tra các công cụ phát triển không? (Rightclick -> kiểm tra). Bạn sẽ quan tâm đến tab mạng (bật nhật ký bảo tồn) và tab tài nguyên (mở thư mục "khung") để kiểm tra xem biểu định kiểu có được tải chính xác hay không. Cũng tham khảo giao diện điều khiển, xem nếu có bất kỳ lỗi nào ở đó. Ngoài ra, bạn có thể sử dụng tab yếu tố để xem những gì đang xảy ra trên dữ liệu HTML. Một gợi ý khác, thêm vào 'media =' print '' trong liên kết css của bạn – vandijkstef

2

Tôi biết đây là câu hỏi cũ nhưng đối với bất kỳ ai đang gặp vấn đề này ngay bây giờ là giải pháp.

Trang đang hiển thị trang trống vì tài liệu chưa được tải xong. để sửa nó, hãy thêm mywindow.print() vào timeout.

var printDivCSS = new String ('<link href="myprintstyle.css" rel="stylesheet" type="text/css">'); 
function Popup(htmldata) 
{ 
    var mywindow = window.open('test', 'eChallanReceipt', 'height=800,width=800,top=20;left=20'); 
    var str ="<html><head><title>test</title>"; 
    str+= "</head><body>"+ printDivCSS + htmldata+"</body></html>"; 
    mywindow.document.write(str); 
    mywindow.document.close(); // necessary for IE >= 10 
    $(mywindow.document).ready(function(){ 
    //set this timeout longer if you have many resources to load 
    setTimeout(function(){ 
     mywindow.focus(); 
     mywindow.print(); 
    },1000); 

    return false; 
} 
+0

Trang hiển thị trống khi css chưa hoàn thành tải –

+0

tuy nhiên tôi đã sử dụng chức năng window.onload thay vì setTimeout ... vì nó không thể được cho là đáng tin cậy nếu css sẽ có thể tải trong thời gian chờ nhất định –

+0

Có cách nào tốt hơn không? Thời gian chờ là một chút hacky và nếu mất nhiều thời gian hơn để tải biểu định kiểu thì nó sẽ phá vỡ và in một trang trống – chasmani

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