在我的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/