javascript打印对话后的回调函数?

javascript打印对话后的回调函数?,javascript,css,printing,Javascript,Css,Printing,例如,我有一个包含大量文本的页面和一个表格 我希望用户能够只打印带有“print this table”javascript链接的表,但我仍然希望页面的其余部分可以通过正常的浏览器打印方法打印 首先,我有一个print.css样式表,如下所示: <link type="text/css" rel="stylesheet" href="style/print.css" media="print"> 在print.css中,我有一个类“.noPrint”设置为display:non

例如,我有一个包含大量文本的页面和一个表格

我希望用户能够只打印带有“print this table”javascript链接的表,但我仍然希望页面的其余部分可以通过正常的浏览器打印方法打印

首先,我有一个print.css样式表,如下所示:

<link type="text/css" rel="stylesheet" href="style/print.css" media="print">

在print.css中,我有一个类“.noPrint”设置为display:none

在我看来,解决方案是用“tempNoPrint”类将不是表的内容包装在div中,然后单击“print this table”让javascript使用“tempNoPrint”将“noPrint”添加到所有div中,从而将它们隐藏在打印机版本中

那很好,我相信会很好


但是,在打印完表之后,如何从所有的“tempNoPrint”div中删除“noPrint”类?打印对话框是否发送了javascript回调?我可以使用计时器,但这似乎非常不可靠。

这可能是一种核方法,但我以前在遇到这种情况时所做的是将我要打印的位输出到一个隐藏的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();
//构建新文档
var代码=”;
//表所需的附加CSS
代码+=”;
//获取和加载项表代码
var code+=“”+document.getElementById('some_table')。innerHTML+“”;
//完成新的文档代码
代码+=”;
//将新文档写入隐藏的iframe(名称:hiddenFrame)
var doc=hiddenFrame.document.open(“text/html”、“replace”);
文件写入(代码);
doc.close();
//印刷品
hiddenFrame.print();

这可能是一种有点核的方法,但我之前在遇到这种情况时所做的是将我想要打印的位输出到一个隐藏的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();
//构建新文档
var代码=”;
//表所需的附加CSS
代码+=”;
//获取和加载项表代码
var code+=“”+document.getElementById('some_table')。innerHTML+“”;
//完成新的文档代码
代码+=”;
//将新文档写入隐藏的iframe(名称:hiddenFrame)
var doc=hiddenFrame.document.open(“text/html”、“replace”);
文件写入(代码);
doc.close();
//印刷品
hiddenFrame.print();

看来我把问题复杂化了

我用“noPrintCustom”类包装了页面上所有我不想打印的内容,然后调用此函数:

var printCustom = function() {

    $('.noPrintCustom').addClass('noPrint');
    window.print();
    $('.noPrintCustom').removeClass('noPrint');
}

感谢所有的帮助

看来我把问题复杂化了

我用“noPrintCustom”类包装了页面上所有我不想打印的内容,然后调用此函数:

var printCustom = function() {

    $('.noPrintCustom').addClass('noPrint');
    window.print();
    $('.noPrintCustom').removeClass('noPrint');
}

感谢所有的帮助

将数据发送到打印机后,是否尝试删除noPrint类?我想你不需要回电话。谢谢Chibuzo,我真傻!我试过了,效果很好!我已经添加了完整的答案。谢谢Stefan,但是对于我正在做的事情,我希望保留页面的页眉和页脚。在将数据发送到打印机后,您是否尝试删除noPrint类?我想你不需要回电话。谢谢Chibuzo,我真傻!我试过了,效果很好!我已经添加了完整的答案。谢谢Stefan,但是为了我所做的,我想保留页面的页眉和页脚。谢谢Mitya,但是因为我想保持页面的页眉和页脚完整,并在“head”标记中插入很多内容来支持这一点,我发现要让它正常工作很困难。为未来的绝望准备了一个很好的小片段:)谢谢Mitya,但是因为我想保持页面的页眉和页脚完整,并在“head”标签中插入很多内容来支持它,我发现要让它正常工作很困难。为未来的绝望准备了一个很好的小片段:)