17

我试图在用户打印这个巨大的表单之前隐藏一些 div,然后再显示 div。因此我想忽略页面的其余部分,只打印表单本身。

当然,当用户单击打印按钮时,我可以打开一个单独的页面。唯一的问题是表格真的很长,这样做会很乏味。


编辑:我之前的问题实际上并没有反映我在寻找什么。所以我把它改成了现在的。

还要感谢所有建议的 window.onbeforeprint 和 window.onafterprint。这与我编辑的问题有关。

4

4 回答 4

28

首先,好的方式:

看看 window.onbeforeprint 和 window.onafterprint (我相信最初的问题是关于如何以编程方式进行)。

现在,更好的方法:

更好的方法是使用专门用于打印的样式。换句话说,您的 div 可能如下所示:

<div class="someClass noPrint">My Info</div>

然后你会在你的样式表中有这个:

.someClass {font-family:arial;}
@media print {
    .noPrint { display: none; }
} 

另外一个选项

如果需要,您也可以将其放在单独的样式表中,这样您就不必混合样式:

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

您的屏幕样式表可以以一种方式定义“.someClass”,然后您的打印样式表可以以完全不同的方式定义它。

于 2008-10-22T00:42:02.120 回答
17

IE 支持onbeforeprintand onafterprint,但您真正想要的是打印样式表。

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

另见:这个答案

于 2008-10-22T00:43:38.890 回答
0

您可能需要考虑使用media="print"创建专门用于打印的样式表

于 2008-10-22T00:43:10.917 回答
0

您应该真正将其实现为 CSS media=print 样式。链接元素的媒体属性可用于选择样式表应用于哪些媒体。检查这篇文章

于 2008-10-22T00:46:30.193 回答