2013-09-27 364 views
2

我試圖通過創建一個新窗口元素來保存我想打印的html,從而打印DIV的內容。一切正常,css樣式在打印預覽窗口中正確顯示,但當窗口物理打印到文件或打印機時,樣式會丟失。我懷疑print()事件是在加載css之前觸發的,但不知道如何解決這個問題。爲什麼我的CSS不打印?

這裏是我的js代碼

function printDiv (elem) 
    { 
    var popup = window.open('','','width=800,height=500,toolbar=no, menubar=no'); 
    popup.document.writeln('<!DOCTYPE html>'); 
    popup.document.writeln('<html><head><title></title>'); 
    popup.document.writeln('<link rel="stylesheet" type="text/css" href="/assets/css/main.css">'); 
    popup.document.writeln('</head><body class="popup-body">'); 
    popup.document.writeln(elem.html()); 
    popup.document.writeln('</body>'); 
    popup.document.writeln('</html>'); 
    popup.print(); 
    popup.close(); 
} 
+0

使用setTimeout(popup.print) – rafaelcastrocouto

+0

您可以嘗試在'/ assets/css/main.css'中的'@media screen,print'打印您的CSS樣式 – techfoobar

回答

0

您可以通過的setTimeout推遲文檔的打印像

setTimeout(function(){ 
    popup.print(); }, delayedAmount); 

例如

setTimeout(
    function(){ 
     popup.print(); 
     popup.close(); 
    }, 1000); 

這將後裝載窗口1000毫秒(1秒)打印該文檔。請注意,您還必須延遲關閉窗口。

+0

這會導致打印窗口僅在關閉彈出.. – Shakur