Я использую div для печати (window.print ()) для печати содержимого. Но после функции печати боковое меню текущей страницы не работает (не поддерживается). Из-за этой проблемы я использую location.reload (); для перезагрузки страницы. но это тоже не работает. Пожалуйста, помогите мне.

Моя функция div для печати:

 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);
}
0
Arya 24 Апр 2017 в 15:50

2 ответа

Лучший ответ

Вы можете обернуть свою логику печати внутри блока if и использовать другое окно для содержимого печати:

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")
}
1
Vovan 24 Апр 2017 в 13:02

Если вы используете какую-то тему, возможно, боковое меню скрывается с помощью медиазапроса CSS "@media print". Просто используйте отладчик или даже вашу IDE, чтобы найти вхождения. Кстати, вы должны также создать правило CSS для печати вашего div вместо использования JS, просто:

@media print {
  .your-div #DataTables_Table_0_length {
    display: none;
  }
  // ...
}
0
Rubens Pinheiro 24 Апр 2017 в 14:08
43588534