在我的Chrome浏览器版本17.0.942.0 winvista中, printdlg不是通常的模态系统-printdlg,而是在网站本身中呈现。所以我想按照here所述打印画布内容。但代码
window.print();
window.close();
不会工作,因为window.close
也会关闭printdlg。所以在chrome window.close
中必须由用户启动或以某种方式延迟。有没有办法知道window.print
是否完成,以便窗口可以自动关闭?
答案 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