首页 > 解决方案 > 如何确认我使用 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);
    }
}


标签: javascriptvue.js

解决方案


我只是用 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>'  );

推荐阅读