在下面的代码中,第二个警报出现在第一个打印弹出页面之前。 搜索结果显示 window.print 是操作系统功能,并且没有返回值。
第二个警报应该仅在打印弹出窗口之后出现。 请帮忙
<script>
function myFunction() {
for(i=0;i<6;i++){
alert('Printing Copy:'+i);
window.print();
}
}
</script>
最佳答案
window.print
是一个异步函数。 “异步”意味着执行将立即返回到调用函数,并且函数期望执行的任何操作都将在另一个时间发生。
您的情况是这样的:您循环了几次,每次警告
用户您将打印文档,然后调用print
。但是,print
调用将立即返回,并且您的循环将在弹出第一次迭代的打印对话框之前进入第二次迭代。
作为补救措施,您可以使用 onbeforeprint
提醒用户您将打印文档。
function myFunction() {
for(i=0; i<6; i++){
window.onbeforeprint = function(){
alert("Printing copy:" + i);
}
window.print();
}
}
注意:如果您不了解此代码的工作原理,您可能需要搜索并了解一些有关“JavaScript 闭包”、“回调”和“异步函数”的知识。
关于javascript - window.print 非常慢。打印前发出警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25008570/