触发window.print()两次或多次

时间:2012-11-27 21:43:05

标签: javascript jquery

我有一个页面,其中包含3个div,我想单独打印 - 我可以手动完成。但是,webapp正在运行带静音打印的Chrome,我需要在3个单独的打印作业中打印这3个div。打印样式表不是我需要的 - 需要3个单独的打印作业...

所以我需要多次触发window.print()。我提出的最好和唯一的解决方案是触发我的打印功能3次,如下所示:

setTimeout(function() { printContent('print1', 'letter'); }, 0);

setTimeout(function() { printContent('print2', 'letter'); }, 1);

setTimeout(function() { printContent('print3', 'letter'); }, 2);

然而,有些时候Chrome无法运行该功能三次。我怎样才能确保连续3次正确触发该功能?

如果有人觉得有趣,我的printContent()函数是这样的:

function printContent(divContent, divClass) {
    var divContent = $('#' + divContent).html();
    $('#print-spooler-box').html('').addClass(divClass).html(divContent);
    window.print();
    $('#print-spooler-box').removeClass(divClass);
}

1 个答案:

答案 0 :(得分:2)

您可以通过编辑打印CSS来避免多次打印。

您可以使用媒体查询或media属性(在<link>元素中)来定位打印样式。

<div class="new-page">
  <p>page one</p>
</div>
<div class="new-page">
  <p>page two</p>
</div>

然后在你的CSS中:

.new-page{
  page-break-before: always;
}