Javascript 如何挂接到window.print对话框close事件以调用函数

Javascript 如何挂接到window.print对话框close事件以调用函数,javascript,javascript-events,Javascript,Javascript Events,如何挂接window.print对话框关闭事件以调用函数 我正在使用jQuery插件和从网页打印数据 默认行为 将表数据格式化为页面上唯一可见的元素 显示一个div,告诉用户单击浏览器上的“打印”按钮 在用户打印后,用户必须按Esc键,这会使页面看起来与单击“打印”按钮之前一样 期望行为 将数据格式化为相同的格式 不显示单击“打印”按钮的说明 调用window.print() 打印对话框关闭后,使页面看起来与单击打印按钮前一样 不需要JavaScript,这个CSS解决方案怎么样? 这也

如何挂接window.print对话框关闭事件以调用函数

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

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

期望行为
  • 将数据格式化为相同的格式
  • 不显示单击“打印”按钮的说明
  • 调用
    window.print()
  • 打印对话框关闭后,使页面看起来与单击打印按钮前一样

    • 不需要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;
       }
      }
      
      请注意,如果选择器匹配在其
      style
      属性中具有显式
      display:block
      (及类似内容)等属性(或使用JavaScript)的元素,则可能仍会显示该元素

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

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

      您是说不要使用datatables打印功能,而只是使用css来隐藏打印输出中不应该显示的内容?我想是这样的。我不知道这些插件,我给出了一个更通用的解决方案。我喜欢datatables打印功能,因为用户仍然可以按他们看到的方式打印页面,但是如果他们单击datatables打印按钮,它将只打印表中的数据。我知道这会有什么帮助,虽然不是为了我的需要。我想你也可以这样做。如果连接到Datatables打印按钮,则可以将类添加到
      document.body
      ,这将导致页面仅显示表,否则,显示所有内容。您可以通过使用setImmediate/setTimeout(零超时或其他)删除该类来删除该类,尽管这不是最好的解决方案,是的。