0

我在 .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 按钮时都会显示确认窗口,但从不显示打印窗口。

如果我做错了对不起我的英语......

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

4

2 回答 2

1

window.print() is executing asynchronously, so it's immediately calls your printPage() function. And so on and so on, if you press 'NO'.

于 2013-08-24T17:08:42.273 回答
0

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

也就是说,解决此问题的一种方法是在 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()而不是您当前拥有的代码。

于 2013-08-26T07:17:55.797 回答