当用户单击按钮时,我会打开一个选项卡。在 onload
上,我让它弹出打印对话框,但用户问我是否有可能在它发送到打印机进行打印后,选项卡是否可以自行关闭。我不确定这是否可以做到。我已经尝试使用 setTimeout();
,但它不是一个定义的时间段,因为用户可能会分心并不得不重新打开选项卡。有什么办法可以做到这一点?
最佳答案
如果您尝试在 print() 调用后立即关闭窗口,它可能会立即关闭窗口并且 print() 将不起作用。这是你不应该做的:
window.open();
...
window.print();
window.close();
此解决方案适用于 Firefox,因为在调用 print() 时,它会等待打印完成,然后继续处理 javascript 并关闭 () 窗口。 IE 将失败,因为它调用 close() 函数而不等待 print() 调用完成。弹出窗口将在打印完成前关闭。
解决它的一种方法是使用“onafterprint”事件,但我不向您推荐它,因为这些事件仅在 IE 中有效。
最好的方法 是在关闭打印对话框(打印完成或取消)后关闭弹出窗口。此时,弹出窗口将获得焦点,您可以使用“onfocus”事件关闭弹出窗口。
为此,只需在弹出窗口中插入这段 javascript 嵌入代码:
<script type="text/javascript">
window.print();
window.onfocus=function(){ window.close();}
</script>
希望这个帮助 ;-)
更新:
对于新的 chrome 浏览器,它可能仍然关闭得太快 see here .我已经实现了此更改,它适用于所有当前浏览器:2/29/16
setTimeout(function () { window.print(); }, 500);
window.onfocus = function () { setTimeout(function () { window.close(); }, 500); }
关于javascript - 打印对话框关闭后自动关闭窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6460630/