我附加了这段 JavaScript 代码,它将一些内容放入弹出窗口中,然后尝试打印它:
$(".print_friendly_popup").click(function() {
var target = $(this).data('print-target');
var left = (screen.width/2)-(500/2);
var top = (screen.height/2)-(500/2);
var win = window.open("", "test", "width=500,height=500 top=" + top + ", left=" + left);
if(target == 'review') {
win.document.write($('#print_friendly_review').html());
} else if(target == 'essay') {
win.document.write($('#print_friendly_essay').html());
}
win.print();
win.close();
});
问题是有时调用 win.document.write 花费的时间太长,并且窗口尝试打印空白屏幕。在触发打印之前如何等待 window.document 被写入?
最佳答案
那么这样怎么样:创建某种“检查器”来查看窗口中是否有内容,例如:
var checkForContent = function () {
setTimeout(function () {
var content = win.document.querySelector('body').innerHTML
if (content.length) {
win.print()
win.close()
} else {
checkForContent()
}
}, 200)
}
这样您就可以在打印之前礼貌地等待内容呈现。
关于javascript - 在调用 window.print() 之前等待 html 写入窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39889656/