使用JavaScript打印页面时出现问题

时间:2013-08-23 20:30:25

标签: javascript

我在.asp页面的末尾有这个功能(是的,旧的asp)。

<script language="JavaScript">
  window.print();
  printPage();

  function printPage() {
    if (confirm("The page was printed correctly?")){
      window.location.replace('Other.asp');
    } else{
      window.print();
      printPage();
    }
  }
</script>

当我执行页面并且从不出现打印选项窗口时出现问题。每次按下NO按钮但从不显示打印窗口时,显示确认窗口。

如果我犯了错误,对不起我的英语......

非常感谢!!!! 来自阿根廷的古斯塔沃.-

2 个答案:

答案 0 :(得分:1)

window.print()正在异步执行,因此会立即调用您的printPage()函数。等等,如果你按“否”。

答案 1 :(得分:0)

正如this answer正确提到的那样,它一旦被调用就会执行,触发本机打印对话框,而不是等到用户实际打印(或取消)页面。你无法知道这种情况何时发生。

也就是说,解决这个问题的一种方法是在HTML文档中放入一条消息,该消息最初将被隐藏,并且只有在发送打印命令后才会显示:

<div id="pnlPrintConfirm" style="display: none;">
    The page was printed correctly? 
    <button type="button" onclick="window.location.replace('Other.asp');">Yes</button> 
    <button type="button" onclick="printPage();">No</button>
 </div>

JavaScript:

function printPage() {
    //get placeholder element:
    var oDiv = document.getElementById("pnlPrintConfirm");

    //hide so it won't get printed after first print:
    oDiv.style.display = "none";

    //send print command:
    window.print();

    //show confirmation panel:
    oDiv.style.display = "block";
}

请记住最初拨打printPage()而不是您目前的代码。