javascript - window.print 非常慢。打印前发出警报

标签 javascript

在下面的代码中,第二个警报出现在第一个打印弹出页面之前。 搜索结果显示 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/

相关文章:

javascript - Date.js 格式化为 dd/mm/yyyy

javascript - 在另一个对象中调用一个对象的方法

javascript - `tbody` 为什么不在表格中设置背景颜色?

javascript - td 上的点击事件不起作用

javascript - 单击时从 JQUERY 调用我的函数

javascript - 如何在javascript中获取具有两个具有相同id的文本框的asp.net用户控件的值

javascript - 在 for 循环中如何传递 document.getElementById ('' ).onClick 调用的函数的参数

javascript - 有没有办法使用 jquery 将替代文本添加到 img 标签?

javascript - 嵌套在 ngIf 中时,异步管道订阅无法正常工作

javascript - 如何根据一个属性优化JS对象的数组查找