window.print()阻止window.open(..)

时间:2017-05-03 10:10:52

标签: javascript jquery

我试图调用window.open(..)然后调用window.print()。无论我做什么,窗户都会打开,直到打印窗口关闭。

<button onclick="PopupPrint();" class="btn btn-primary"> Print </button>

<script>
    function PopupPrint() {
        $.when(Popup()).done(function () {
            window.print();
        });       
    }

    function Popup() {
        window.open("https://google.com", "_blank");
    }
</script>

是否有解决方法来完成这项工作?

1 个答案:

答案 0 :(得分:0)

您的代码在Firefox中运行良好。 Chrome在打开新标签后(在加载内容之前)触发完成事件。这导致print(),它将阻止所有执行,包括其子代。

function PopupPrint() {
    $.when(Popup()).done(function () {
        setTimeout(function(){
            window.print();
        }, 300);
    });
}

这将解决问题,并不完全是因为每个客户端的加载时间根据其Internet速度而不同。用最适用的替换300。