2

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

我正在使用 jQuery 插件DatatablesTable tools 插件从网页打印数据。

默认行为

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

默认数据表示例

期望的行为

  • 数据格式相同
  • 不要显示点击打印按钮的说明
  • 称呼window.print();
  • 打印对话框关闭后,使页面看起来与单击打印按钮之前一样。
4

1 回答 1

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?)有beforeprint事件afterprint,我想你可以听他们并采取相应的行动,但这并不是真正的跨浏览器实现,它比普通的 CSS 稍微复杂一些。

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

于 2012-09-05T18:18:07.377 回答