2017-04-24 86 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; 
    } 
    // ... 
}