在新标签“ about:blank”上打印,然后像数据表lib

时间:2019-05-16 08:46:36

标签: javascript jquery html

我喜欢数据表的打印方式,通过单击PRINT按钮,将打开一个新窗口(不在弹出窗口中),然后出现打印提示,然后单击PRINT或CANCEL,关闭打开的选项卡! 我想修改,或者说老实话,我想创建自己的自定义脚本代码! 所以到目前为止,我所做的就是发现如何打开新的about:空白页面:

<a href="about:blank" target="_blank">PRINT</a>

那么如何在空白页中填充带有数据的表,以及如何在完成打印后自动关闭该页?它背后的JavaScript是什么?

就像这个例子:https://jsfiddle.net/ms85e7zo/

注意!我不想为此使用数据表库,我只想一个明确的概念,如何做到这一点!

1 个答案:

答案 0 :(得分:1)

如果选中DataTables打印按钮的source,则可以看到实现预期效果的逻辑。请注意,win是对已创建并已将内容注入其中的弹出窗口的引用。

var autoPrint = function() {
  if (config.autoPrint) {
    win.print(); // blocking - so close will not
    win.close(); // execute until this is done
  }
};

if (navigator.userAgent.match(/Trident\/\d.\d/)) { // IE needs to call this without a setTimeout
  autoPrint();
} else {
  win.setTimeout(autoPrint, 1000);
}

简而言之,他们所做的只是调用print(),这会阻塞主浏览器线程,然后立即调用close()。结果,无论用户决定继续打印还是取消打印,在取消模态之后执行恢复后,新窗口都会关闭。 setTimeout()仅用于确保在打印之前已将所有样式和数据加载到IE中。

这是一种简单有效的解决方案。