window.print()在不同页面上显示相同的结果

时间:2018-08-24 14:50:16

标签: javascript reactjs google-chrome

我正在尝试使用JavaScript中的 window.print()功能打印一些账单。我正在使用React.js,当我单击打印时,它会打印所需的内容。之后,如果我要打印另一张账单,它将显示我尝试打印的第一张账单中的数据。不管我尝试打印多少张不同的钞票,它始终显示我尝试打印的第一张钞票中的数据。我发现的唯一解决方案是重新加载页面,但是随后我需要再次登录,并且失去了应用程序的状态。

有什么方法可以重新启动window.print()函数以不从以前的打印数据中获取数据吗?

下面是执行打印的代码示例

 printElement(elem) {
    var domClone = elem.cloneNode(true);

    var $printSection = document.getElementById("printSection");

    if (!$printSection) {
        var $printSection = document.createElement("div");
        $printSection.id = "printSection";
        document.body.appendChild($printSection);
    }

    $printSection.innerHTML = "";
    $printSection.appendChild(domClone);
    window.print();
    window.close();
}

print() {
    this.printElement(document.getElementById("divToPrint"));
}

1 个答案:

答案 0 :(得分:0)

在执行打印功能时DOM尚未更新,请稍加延迟。

printElement(elem) {
    var domClone = elem.cloneNode(true);

    var $printSection = document.getElementById("printSection");

    if (!$printSection) {
        var $printSection = document.createElement("div");
        $printSection.id = "printSection";
        document.body.appendChild($printSection);
    }

    $printSection.innerHTML = "";
    $printSection.appendChild(domClone);

    // Small delay of 0.5s
    setTimeout(() => {
        window.print();
        window.close();
    }, 500);

}