当用户单击按钮时,我打开了一个选项卡。在 onload
我让它弹出打印对话框,但用户问我是否有可能在它发送到打印机打印后,如果选项卡可以自行关闭。我不确定这是否可以做到。我试过使用 setTimeout();
,但这不是定义的时间段,因为用户可能会分心并不得不重新打开选项卡。有什么办法可以做到这一点?
原文由 Tsundoku 发布,翻译遵循 CC BY-SA 4.0 许可协议
当用户单击按钮时,我打开了一个选项卡。在 onload
我让它弹出打印对话框,但用户问我是否有可能在它发送到打印机打印后,如果选项卡可以自行关闭。我不确定这是否可以做到。我试过使用 setTimeout();
,但这不是定义的时间段,因为用户可能会分心并不得不重新打开选项卡。有什么办法可以做到这一点?
原文由 Tsundoku 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
如果您尝试在 print() 调用后立即关闭窗口,它可能会立即关闭窗口并且 print() 将不起作用。这是 你不应该做的:
此解决方案将在 Firefox 中运行,因为在 print() 调用时,它会等待打印完成,然后继续处理 javascript 并关闭 () 窗口。 IE 将失败,因为它调用 close() 函数而不等待 print() 调用完成。弹出窗口将在打印完成前关闭。
解决它的一种方法是使用“onafterprint”事件,但我不向您推荐它,因为这些事件仅在 IE 中有效。
最好的方法 是在关闭打印对话框(打印完成或取消)后关闭弹出窗口。此时,弹窗将获得焦点,您可以使用“onfocus”事件关闭弹窗。
为此,只需将此 javascript 嵌入式代码插入弹出窗口:
希望这个 hepls ;-)
更新:
对于新的 chrome 浏览器,它可能仍然会很快关闭, 请参见此处。我已经实施了此更改,它适用于所有当前浏览器:2/29/16