【问题标题】:JavaScript windows.print() callback - Determining when a print job completesJavaScript windows.print() 回调 - 确定打印作业何时完成
【发布时间】:2023-03-21 12:52:02
【问题描述】:

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

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

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

可能的解决方案:我可以增加打印调用之间的延迟。但是,这不是很可靠,因为有些订单可能很长,而另一些则不然。此解决方案可能不适用于某些情况,并且只会减慢其他情况。

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: javascript firefox printing


    【解决方案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'));
        }
    });
    

    这应该适用于例如谷歌浏览器

    【讨论】:

    • 不幸的是,一旦用户接受打印作业,而不是打印作业完成时,就会触发此回调。虽然,我认为没有一种简单的方法可以使用 javascript 实现这一目标。将接受此答案,因为对其他人来说可能就足够了。
    猜你喜欢
    • 1970-01-01
    • 2020-10-18
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多