我正在尝试使用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"));
}
答案 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);
}