在内容进入打印机之前关闭窗口(JavaScript)

Window closing before content goes to Printer (JavaScript)

本文关键字:窗口 JavaScript 打印机      更新时间:2023-09-26

我有下面的代码块,它打开了一个带有当前窗口内容的新浏览器窗口,除了用于打印的精简布局。然后,它将新页面发送到打印机,并最终关闭该页面。我遇到的问题是,在打印机选项卡获取所有数据之前,新窗口似乎正在关闭。也许是print()的回调,然后在完成时调用close()?我将如何着手实现此功能?提前谢谢。

打印列表

<script type="text/javascript">
    function generate_url()
    {
        //var go_href = 'http:<?php echo BASE_URL ?>/admin/reservations/print_list';
        myWin = window.open('http:<?php echo BASE_URL ?>/admin/reservations/print_list');
        myWin.focus();
        myWin.print();
        myWin.close()
        return false;
    }
</script>

我认为打印没有任何回调函数。我建议你可以推迟窗口关闭,这可能在某种程度上有所帮助:


myWin.focus();
myWin.print();
setTimeout(function(){
   myWin.close();
}, 6000);

希望它在某种程度上有帮助

完全摆脱JavaScript和新页面。使用打印媒体样式表去掉(display: none)您不想打印的内容。

不要打开新窗口,而是加载要在隐藏的iframe 中打印的内容

 var ifr = document.createElement('iframe');
 ifr.style.display = 'none';
 ifr.src = '/admin/reservations/print_list';
 ifr.onload = function () {
      ifr.contentWindow.print();
 }
 document.body.appendChild(ifr);

您可以稍后重新使用此iframe进行进一步打印,在长得离谱的超时后将其删除,或者将其留在页面上。

谢谢彭彭80,但IE6/7是评估版!

所以我在ie/7中测试,它有效!

在父页面中:

var printIframe = document.getElementById('printIframe');
printIframe.src = 'print.php';
<iframe id="printIframe" style="width: 0; height: 0;" />

打印页面:

<body onload="this.focus(); this.print();">
  • 在IE中打印隐藏的iFrame
  • 打印iFrame时出现问题