2

印刷したい html を保持する新しいウィンドウ要素を作成して、DIV の内容を印刷しようとしています。すべてが機能し、css スタイルは印刷プレビュー ウィンドウに正しく表示されますが、ウィンドウがファイルまたはプリンターに物理的に印刷されるとスタイルが失われます。css が読み込まれる前に print() イベントが発生したと思われますが、これを修正する方法がわかりません。

これが私の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();
}
4

2 に答える 2

0

setTimeoutのようにドキュメントの印刷を遅らせることができます

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

例えば

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

これにより、ウィンドウの読み込みから 1000 ミリ秒 (1 秒) 後にドキュメントが印刷されます。ウィンドウを閉じるのも遅らせる必要があることに注意してください。

于 2013-09-27T13:17:52.170 に答える