我需要打印使用JavaScript和HTML动态创建的页面。我的问题是,有时它显示空白页。我认为这是因为尚未加载“窗口”。如何打印直到窗口加载完毕?
我尝试添加方法wait()
,但问题是相同的。
这是打印页面的方法:
function printpage(){
var panel;
panel =document.getElementById("cajaticket").innerHTML;
var mywindow = window.open('', 'Print');
mywindow.document.write('<html><head><link rel="stylesheet" href="css/extras/ticket.css"></head><body>');
mywindow.document.write(panel);
mywindow.document.write('</body></html>');
mywindow.document.close();
mywindow.focus();
mywindow.print();
mywindow.close();
panel=null;
}
它应该总是打印窗口,但是目前,它仅在某些时候可以工作。
答案 0 :(得分:1)
如果整个页面都已加载,则可以调用printpage()函数。
$(window).bind("load", function() {
// code here
});
答案 1 :(得分:1)
如果您需要jQuery来帮助您解决此问题,请尝试以下操作:
$($(window).on('load', function() {
printpage();
});
);
function printpage(){
var panel;
panel =document.getElementById("cajaticket").innerHTML;
var mywindow = window.open('', 'Print');
mywindow.document.write('<html><head><link rel="stylesheet" href="css/extras/ticket.css"></head><body>');
mywindow.document.write(panel);
mywindow.document.write('</body></html>');
mywindow.focus();
mywindow.print();
mywindow.close();
panel=null;
}
这将确保DOM
在打印之前已加载,准备好并呈现。
更新:使用
$(mywindow).on('load', function() {
// manipulate mywindow here
});
很好,但是文档中没有明确说明支持该功能:
load 事件在元素和所有子元素都已完全加载时发送到元素。此事件可以发送到与 URL 相关的任何元素:图像,脚本,框架,iframe和
window
对象。
请参阅完整的文档here。