打印对话框关闭后自动关闭窗口

新手上路,请多包涵

当用户单击按钮时,我打开了一个选项卡。在 onload 我让它弹出打印对话框,但用户问我是否有可能在它发送到打印机打印后,如果选项卡可以自行关闭。我不确定这是否可以做到。我试过使用 setTimeout(); ,但这不是定义的时间段,因为用户可能会分心并不得不重新打开选项卡。有什么办法可以做到这一点?

原文由 Tsundoku 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

如果您尝试在 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>

希望这个 hepls ;-)

更新:

对于新的 chrome 浏览器,它可能仍然会很快关闭, 请参见此处。我已经实施了此更改,它适用于所有当前浏览器:2/29/16

         setTimeout(function () { window.print(); }, 500);
        window.onfocus = function () { setTimeout(function () { window.close(); }, 500); }

原文由 serfer2 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题