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