2017-04-24 89 views
0

我正在使用div打印(window.print())打印内容。但打印功能后,当前页面的侧边菜单不起作用(不支持)。由于这个问题,我正在使用location.reload();用于页面重新加载。但那也行不通。请帮帮我。打印内容后页面重新加载

我格打印功能,

function printDiv(divName) { 
    $("#DataTables_Table_0_length").hide(); 
    $("#DataTables_Table_0_filter").hide(); 
    $("#DataTables_Table_0_info").hide(); 
    $("#DataTables_Table_0_paginate").hide(); 
    var printContents = document.getElementById(divName).innerHTML; 
    var originalContents = document.body.innerHTML; 
    document.body.innerHTML = printContents; 
    window.print(); 
    document.body.innerHTML = originalContents; 
    $("#DataTables_Table_0_length").show(); 
    $("#DataTables_Table_0_filter").show(); 
    $("#DataTables_Table_0_info").show(); 
    $("#DataTables_Table_0_paginate").show(); 
    window.location.reload(true); 
} 
+1

更换内容,可能会发生一些事件侦听器,因为缺乏相应的元素时被毁。这可能是一个原因。 –

+0

这是什么解决方案? – Arya

+0

难道你不能只是打开一个新的窗口,并使用div的内容传递给该窗口,所以你不必乱七八糟的原始页面? – ProgrammerV5

回答

1

你可以用你的打印逻辑中,如果块,并使用另一个窗口为您打印的内容:

if(window.print){ 
     var printWindow = window.open('', 'Printing...', 'height=400,width=600'); 
     printWindow.document.write(YOUR_CONTENT_OF_DIV); 
     printWindow.document.close(); 
     printWindow.focus(); 
     printWindow.print(); 
     printWindow.close(); 
} else { 
     alert("Printing is not supported by browser") 
} 
+0

它正在工作。非常感谢你Vovan。 – Arya

0

如果你使用的是主题,可能是使用CSS媒体查询“@media print”隐藏了侧边菜单。只需使用调试器或甚至您的IDE来查找事件。 顺便说一句,你也应该通过简单地创建用于打印您的DIV而不是使用JS,CSS规则:

@media print { 
    .your-div #DataTables_Table_0_length { 
    display: none; 
    } 
    // ... 
}