Javascript 页面完全加载后打印页面

Javascript 页面完全加载后打印页面,javascript,html,printing,Javascript,Html,Printing,啊!我正在尝试从Javascript打印页面。但在打印预览中,它总是显示不完整的页面或页面中的空白 页面中的HTML完全加载后,如何打印页面 var html = document.getElementsByTagName('html')[0]; var printText = html.innerHTML; function PrintDiv(data) { var mywindow = window.open(); var is_chrome = Boolean(mywind

啊!我正在尝试从
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);
});

此问题通常是由以下问题引起的:网页的某些内容是通过AJAX POST加载的,并且在POST请求得到响应之前执行打印。要处理此问题,您需要在加载所有内容后进行打印,这是页面加载事件发生后的情况。因此,您需要将AJAX请求转换为并对其调用方法,以确保在正确的时间在正确的位置进行打印。例如:

Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values);
});

您看到“不完整的页面或间隙”的原因是因为您试图打印页面时应用于该页面的样式表吗?嗨@goto1,我不这么认为。我可以在预览中看到应用的样式。但我可以看到一些内容丢失了。如段落或图像。页面是否也加载外部脚本,是否还有其他嵌入的javascript代码尚未发布?是否插入发布的代码(例如,作为内容脚本)或是否完全控制整个页面。在后一种情况下,如果您可以共享完整的HTML,则会有所帮助。