我使用下面的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();
}
答案 0 :(得分:1)
您可以在页面格式化后使用setTimeout
打印几毫秒。
...
setTimeout(function(){
printWindow.print();
}, 1)
或者,您可以等到窗口加载完毕:
printWindow.document.addEventListener('load', function(){
printWindow.print();
})