2013-09-27 6 views
2

Я пытаюсь распечатать содержимое DIV, создав новый элемент window, который содержит html, который я хотел бы распечатать. Все работает, и 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

Вы можете попробовать использовать '@media screen, print' вокруг стилей CSS в'/assets/css/main.css' – techfoobar

ответ

0

Вы можете отложить печать документа на SetTimeout как

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

Например

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

Это будет печатать документ после того, как 1000 миллисекунд (1 секунда) после загрузки окна. Обратите внимание, что вам также придется задерживать закрытие окна.

+0

, поэтому окно печати появляется только тогда, когда я закрываю выскакивать.. – Shakur

Смежные вопросы