从javascript在chrome打印:如何知道打印完成



在我的chrome浏览器版本17.0.942.0 winvista中,printdlg不是通常的模式系统-printdlg,而是在网站本身中呈现。因此,我想打印画布内容,如这里所述。但是代码

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

不起作用,因为window.close也关闭了printdlg。因此,在铬中,window.close必须由用户发起或以某种方式延迟。是否有办法知道window.print是否完成,以便自动关闭窗口?

查看与您遇到的类似的错误报告的注释:http://code.google.com/p/chromium/issues/detail?id=92107 c31

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

另见:Chrome窗口。打印()窗口。close()导致'打印预览失败'。解决方案吗?

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

<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只在文档聚焦时被调用,这只发生在覆盖打印对话框关闭时。因此,它的工作方式与您想要的完全相同。

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

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

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

相关内容

最新更新