在内容转到打印机(JavaScript)之前关闭窗口

时间:2012-01-13 11:44:31

标签: javascript printing callback

我有以下代码块,它打开一个带有当前窗口内容的新浏览器窗口,除了用于打印的精简版面。然后它将新页面发送到打印机,最后关闭页面。我遇到的问题是,在打印机选项卡获取所有数据之前,新窗口似乎正在关闭。也许是print()的回调,然后在completition上调用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>

4 个答案:

答案 0 :(得分:2)

我不认为打印有任何回调函数。我建议你可以延迟关闭窗口,这可能会有所帮助:


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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

不要打开新窗口,而是在隐藏的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进行进一步打印,在超长时间过长后将其删除,或者将其保留在页面上。

答案 3 :(得分:0)

感谢Pumbaa80,但是IE6 / 7是eval!

所以我在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();">