如何在使用JavaScript函数打印时打印隐藏的DIV

如何在使用JavaScript函数打印时打印隐藏的DIV,javascript,jquery,asp.net,function,printing,Javascript,Jquery,Asp.net,Function,Printing,我有一个javascript打印功能: function printDetails() { var printContent = document.getElementById('<%= divMail.ClientID %>'); var windowUrl = 'about:blank'; var uniqueName = new Date(); var windowName = 'Print' + uni

我有一个javascript打印功能:

    function printDetails() {
        var printContent = document.getElementById('<%= divMail.ClientID %>');

        var windowUrl = 'about:blank';
        var uniqueName = new Date();
        var windowName = 'Print' + uniqueName.getTime();
        var printWindow = window.open(windowUrl, windowName, 'left=500,top=500,width=0,height=0');
        printWindow.document.write(printContent.innerHTML);

        printWindow.document.close();
        printWindow.focus();
        printWindow.print();

        printWindow.close();

        return false;
    }
问题是:
当我打印时,我获取divMail(DIV)的内容并将其发送到打印功能,问题是因为我在divMail中有一个隐藏的DIV,所以它不会显示在打印中。如何使打印功能显示隐藏的DIV?

您可以将其指定为在CSS中打印时可见:

@media screen {
    #showTopDetailsContent { display: none; }
    #showTopDetailsContent.show { display: block; }
}
@media print {
    #showTopDetailsContent { display: block !important; }
}
不要使用应用内联样式的
.toggle()
,而是使用类

$('#showTopDetailsContent').toggleClass('show');
试试这个:

printWindow.document.getElementById('showTopDetailsContent').style.display='block';
之后

printWindow.document.write(printContent.innerHTML);

您需要在CSS中抑制边框

/* stop page from printing footer */
@page {
    size: auto;   /* auto is the initial value */
    margin: 0mm;  /* this affects the margin in the printer settings */
}

但这会使你的内容接近边缘,所以我会用一些填充物将所有内容包装在一个DIV中

无论如何,我不知道有人会拒绝你的评论,它不起作用,因为打印功能打开了一个新窗口,@media print在那里不可用。@EricBergman-如果CSS块在DIV
divMail
中,它也会在打印窗口中可用。谢谢阿尔贝托,这正是我要找的。
printWindow.document.write(printContent.innerHTML);
/* stop page from printing footer */
@page {
    size: auto;   /* auto is the initial value */
    margin: 0mm;  /* this affects the margin in the printer settings */
}