Распечатать страницу после полной загрузки страницы - PullRequest
0 голосов
/ 10 июля 2020

H! Я пытаюсь распечатать страницу из Javascript. Но в предварительном просмотре печати всегда отображается неполная страница или пробелы на странице.

Как я могу распечатать страницу, когда HTML страница полностью загружена?

var html = document.getElementsByTagName('html')[0];
var printText = html.innerHTML;
function PrintDiv(data) {
    var mywindow = window.open();
    var is_chrome = Boolean(mywindow.chrome);
    mywindow.document.write(data);
if (is_chrome) {
    setTimeout(function() { // wait until all resources loaded
        mywindow.document.close(); // necessary for IE >= 10
        mywindow.focus(); // necessary for IE >= 10
        mywindow.print(); // change window to winPrint
        mywindow.close(); // change window to winPrint
    }, 1000);
} else {
        mywindow.document.close(); // necessary for IE >= 10
        mywindow.focus(); // necessary for IE >= 10
        mywindow.print();
        mywindow.close();
}
    return true;
}

$(document).load(function() {
    PrintDiv(printText);
});

1 Ответ

0 голосов
/ 10 июля 2020

Эта проблема обычно вызвана тем, что некоторое содержимое веб-страницы загружается через AJAX POST и ваша печать выполняется до того, как на запросы POST будет дан ответ. Чтобы справиться с этим, вам нужно будет выполнить печать после загрузки всего вашего контента, то есть после того, как произошло событие загрузки страницы. Итак, вам нужно будет преобразовать ваши AJAX запросы в обещания и вызвать для них метод .all () , чтобы гарантировать, что печать выполняется в нужном месте в нужное время. Пример:

Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...