从Chrome中的javascript打印:如何知道打印已完成?

时间:2011-11-22 13:38:44

标签: javascript google-chrome printing

在我的Chrome浏览器版本17.0.942.0 winvista中, printdlg不是通常的模态系统-printdlg,而是在网站本身中呈现。所以我想按照here所述打印画布内容。但代码

window.print(); window.close();

不会工作,因为window.close也会关闭printdlg。所以在chrome window.close中必须由用户启动或以某种方式延迟。有没有办法知道window.print是否完成,以便窗口可以自动关闭?

4 个答案:

答案 0 :(得分:4)

在类似于您遇到的错误报告上查看此评论: http://code.google.com/p/chromium/issues/detail?id=92107#c31

似乎window.print是异步的,解决方法是在打印后检查鼠标移动事件,这将在打印对话框关闭时发生,然后您可以执行其余操作。

另见:Chrome window.print() window.close() results in 'print preview failed'. Solution?

答案 1 :(得分:4)

将此脚本添加到弹出式打印窗口

<script src="/assets/print_window_close.js" type="text/javascript"></script>

print_window_close.js的内容是

jQuery(document).ready(function() {

    setTimeout(function() {
        window.close();
    }, 1);

});

基本上只有当文档聚焦时才会调用seTimeout,只有在关闭覆盖打印对话框时才会发生。因此,这与您想要的完全相同。

答案 2 :(得分:0)

您可以尝试使用window.onafterprint。 例如:

window.onafterprint = function(){console.log('Print finished...')}

然后你可以在这篇文章中找到更多细节:http://tjvantoll.com/2012/06/15/detecting-print-requests-with-javascript/

答案 3 :(得分:-1)

这对我有用,你必须让听众打印事件:https://gist.github.com/vluzrmos/085975de3e1840936604