我喜欢数据表的打印方式,通过单击PRINT按钮,将打开一个新窗口(不在弹出窗口中),然后出现打印提示,然后单击PRINT或CANCEL,关闭打开的选项卡! 我想修改,或者说老实话,我想创建自己的自定义脚本代码! 所以到目前为止,我所做的就是发现如何打开新的about:空白页面:
<a href="about:blank" target="_blank">PRINT</a>
那么如何在空白页中填充带有数据的表,以及如何在完成打印后自动关闭该页?它背后的JavaScript是什么?
就像这个例子:https://jsfiddle.net/ms85e7zo/
注意!我不想为此使用数据表库,我只想一个明确的概念,如何做到这一点!
答案 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中。
这是一种简单有效的解决方案。