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

标签 javascript printing

当用户单击按钮时,我会打开一个选项卡。在 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/

相关文章:

javascript - 从一个 HTML 页面到另一个 HTML 页面的表单数据

java - 将数据打印到预先打印的表格/信纸上

javascript - Firebase 云功能。无法读取未定义 (.ref) 的属性父级

javascript - Webpack 的 UglifyJsPlugin 会抛出包含 let 的 Node 模块错误

javascript - 监听变量值的变化并处理点击事件

java - 如何使用斑马小程序在收据打印机中打印

printing - 在python 3中没有空格打印

function - 将函数结果分配给SQL变量并显示

android - Codenameone 创建可打印文档

javascript - Javascript 客户端之间的通信?