JavaScript windows.print()回调 - 确定打印作业何时完成

时间:2016-05-07 15:03:33

标签: javascript firefox printing

问题:是否可以向windows.print()功能添加回调?我意识到没有本机解决方案,但我想知道是否有某种类型的库可以实现这一点。注意 - 如果我需要安装某些东西,我可以访问计算机。

背景:我实施了一个在Firefox上运行的网络POS解决方案(v44-46)。对于某些订单,我需要在Epson TM-T88V打印机上打印2张收据。

问题:如果在第一张收据仍在打印时执行第二个windows.print()方法,则Firefox会提示"某些打印功能不可用"。

可能的解决方案:我可以增加打印电话之间的延迟。然而,由于某些订单可能非常冗长,而其他订单则不是很长,因此这不是很强大。这种解决方案可能不适用于某些情况,并且只会减慢其他情况。

还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

好像你想听afterprint事件

window.addEventListener('afterprint', e => console.log('Ready for next print job'));

请注意,此浏览器支持较低( FireFox 6 +,IE

MDN page还告诉我们,通过在matchMedia('print')上添加一个监听器,可以在基于webkit的浏览器中实现类似的功能,所以你可以通过为这些浏览器编写类似下面的东西来填充它

window.matchMedia('print').addListener(mql => {
    if (!mql.matches) {
        window.dispatchEvent(new Event('afterprint'));
    }
});

这应该适用于例如 Google Chrome