打印前允许窗口格式化

时间:2014-09-23 14:09:51

标签: javascript getelementbyid

我使用下面的javascript代码将元素ID传递给方法,然后在单独的窗口中格式化该特定ID,然后打印。我遇到的问题是在窗口完成格式化新页面之前打开了打印对话框。然后我必须取消打印对话框,然后允许页面格式化,然后再次启动打印。如何在打印对话框打开之前确保页面完成格式化?感谢。

function printPartOfPage(elementId) {   
    var printHeader = document.getElementById('header');
    var printContent = document.getElementById(elementId);
    var windowUrl = 'NewWindow';
    var uniqueName = new Date();
    var windowName = 'Print' + uniqueName.getTime();
    var printWindow = window.open(windowUrl, windowName, 'left=20,top=200');
    printWindow.document.write('<html xmlns="http://www.w3.org/1999/xhtml"><head>');    
    printWindow.document.write('<link href='+sURL+'css/style.css rel="stylesheet">');   
    printWindow.document.write('<link href='+sURL+'css/print.css rel="stylesheet">');   
    printWindow.document.write('</head><body>');    
    printWindow.document.write(printContent.innerHTML);
    printWindow.document.write('</body></html>');
    printWindow.document.close();
    printWindow.focus();
    printWindow.print();
}

1 个答案:

答案 0 :(得分:1)

您可以在页面格式化后使用setTimeout打印几毫秒。

...
setTimeout(function(){
    printWindow.print();
}, 1)

或者,您可以等到窗口加载完毕:

printWindow.document.addEventListener('load', function(){
    printWindow.print();
})