所以我有一个页面,上面有很多文字和一个表格。
我希望用户能够使用“打印此表”javascript链接打印表格,但我仍然希望通过普通的浏览器打印方法打印页面的其余部分。
首先,我有一个print.css样式表,如下所示:
<link type="text/css" rel="stylesheet" href="style/print.css" media="print">
在print.css中,我有一个“.noPrint”类设置为display:none。
在我看来,解决方案是使用'tempNoPrint'类将div中不是表格的内容包装起来,点击'打印此表'后,javascript将'noPrint'添加到所有div中'tempNoPrint'因此将它们隐藏在打印机版本中。
那很好,我相信会很好。
但是,在打印完表后,如何从所有'tempNoPrint'div 中删除'noPrint'类?是否有从打印对话框发送的javascript回调?我可以使用计时器但似乎非常不可靠。
答案 0 :(得分:4)
这可能是一种核方法,但我之前在跳过这种事情时所做的就是将我要打印的位输出到隐藏的iframe并打印出来。
//build new document
var code = "<!doctype html><html><head>";
//add in CSS needed by the table
code += "<link rel='stylesheet' type='text/css' href='table.css' /></head><body>";
//get and add in table code
var code += "<table>"+document.getElementById('some_table').innerHTML+"</table>";
//finish up new doc code
code += "</body></html>";
//write new doc to hidden iframe (name: hiddenFrame)
var doc = hiddenFrame.document.open("text/html","replace");
doc.write(code);
doc.close();
//print
hiddenFrame.print();
答案 1 :(得分:2)
看来我的问题太复杂了!
我在页面上包含了我不想打印的所有内容,并使用带有'noPrintCustom'类的按钮div,然后我调用了这个函数:
var printCustom = function() {
$('.noPrintCustom').addClass('noPrint');
window.print();
$('.noPrintCustom').removeClass('noPrint');
}
感谢所有帮助!