javascript - 如何确认我使用 window.open window.document.write 创建的页面是否已加载
问题描述
我想用js打印。
下面是我的代码示例。它可以工作,但有时它会显示打印对话框
在文档完全加载之前
let myWindow = window.open("", "MsgWindow");
let receiptHtml = app.$refs.receipt.innerHTML; // html to print
waitLoadingAndPrint();
function waitLoadingAndPrint() {
if (myWindow && !myWindow.closed && myWindow.document ) {
myWindow.document.write(receiptHtml);
myWindow.print();
myWindow.close();
} else if (myWindow && !myWindow.closed) {
setTimeout(waitLoadingAndPrint, 30);
}
}
解决方案
我只是用 iframe 改变了方式
let myWindow = window.frames["printf"];
let printScript = '<script>if(typeof printCopies === "undefined"){ let printCopies = 0;} printCopies = '+ app.printCopies + '; function printDocument(){if(printCopies > 0){ for(let i= printCopies ; i>= 0; i--){ window.print(); } } else{ window.print();}} </script>';
myWindow.document.write( printScript + '<body onload="printDocument()">'+receiptHtml '</body>' );
推荐阅读
- typescript - 打字稿中数组上的自定义键
- python - Python请求循环,如果状态码不是200重试
- javascript - 如何确定滚动条是否位于垂直滚动高度的最底部
- php - 在 SAAS 类型的 Web 应用程序、子域结构或 URL 结构的可扩展性和安全性方面,哪个更受欢迎?
- sql - 如何优化触发器
- c++ - 避免错误包含相同文件的最佳方法是什么?
- java - Android Studio 上的 aapt2 3.5.0-5435860 windows gradle 错误
- git - IntellijIdea,如何删除所有提交信息
- android - 相同应用的显示尺寸不同
- java - 为什么后增量运算符无法在此代码中增加“a”?