如何挂钩到window.print对话框关闭事件来调用函数

时间:2012-09-05 15:39:51

标签: javascript javascript-events

如何挂钩window.print对话框关闭事件来调用函数?

我正在使用jQuery插件 Datatables Table tools plugin 来打印网页上的数据。

默认行为

  • 将表格数据格式化为仅页面上可见的元素
  • 显示一个div,告诉用户单击浏览器上的打印按钮。
  • 用户打印后,用户必须按 Esc ,这样会使页面看起来像点击打印按钮之前一样。

Example of default datatables

期望的行为

  • 格式化数据
  • 不显示单击打印按钮的说明
  • 致电window.print();
  • 打印对话框关闭后,使页面看起来像点击打印按钮之前一样。

1 个答案:

答案 0 :(得分:1)

不需要JavaScript,这个CSS解决方案怎么样? 这也适用于所有浏览器。

@media print
{
 /* Add here any selector for ('root') elements you do not want to be printed. */
 .header, .footer, .floating-print-instructions
 {
  display: none;
 }
}

请注意,如果选择器匹配在其display: block属性中具有显式style(和类似)的元素(或使用JavaScript),则可能仍会显示它。

另外,我相信某些浏览器(Internet Explorer?)有beforeprintafterprint个事件,我想您可以听取它们并采取相应的行动,但这不是真正的跨浏览器实现而且它比普通的CSS稍微复杂一点。

您可以收听keyup / keydown事件以了解用户是否按下了Cotrol + P.但是,用户可以使用其他方式(菜单,工具栏按钮)进行打印。 此外,在某些浏览器(Chrome)中,window.print()部分异步(只有window.close()次调用在其后同步运行),因此您的代码可能会在其后运行。