【问题标题】:Chrome Print Dialog won't execute a separate JavaScript function until the dialog is cancelled or printed在取消或打印对话框之前,Chrome 打印对话框不会执行单独的 JavaScript 函数
【发布时间】:2017-12-07 20:05:22
【问题描述】:

我正在尝试对同样执行window.print() 的点击事件执行跟踪调用。我已经先进行了跟踪调用,但在对话框关闭之前它不会执行。

Firefox 和 IE 按顺序执行所有操作。这个问题似乎是 Chrome 独有的。 我已经安慰了一些文本,它们以正确的顺序显示,但是在我关闭对话框之前,网络不会显示跟踪调用。

有人知道如何解决这个问题吗?

<script>
function printTrack(){
    _satellite.track('something');
    window.print();
}
</script>

<button id="print-button" onclick="javascript:printTrack()">Print</button>

【问题讨论】:

  • 你能发布你的代码吗?
  • 您是否在新窗口中使用window.open() 执行此操作。我在 google 中发现了很多关于 window.print() 在子窗口中阻止父窗口的点击。这是一个已知的错误。
  • 没有 window.open... function printTrack(){ _satellite.track('blah');窗口.打印(); } 这很简单。我在跟踪调用上设置了超时,但也没有用。
  • 跟踪电话是什么意思?顺便说一句,“跟踪”标签上写着 请勿使用,你为什么使用它?
  • @Barmar,“不要使用”是什么意思?

标签: javascript google-chrome printing


【解决方案1】:

我能够通过使用承诺来解决这个问题:

function printTrack(pn) {
        return new Promise(function (resolve, reject) {
            resolve(_satellite.setVar('pdf_name', pn), 
            _satellite.track('pdf_print'));
        });
    }

    printTrack(printName).then(function (result) {
        window.print();
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    相关资源
    最近更新 更多