更改位置前打印页面

时间:2018-04-03 22:06:49

标签: javascript printing

我想要一个参赛表格(HTML5,CSS3,Chrome版本65.0.3325.181),并希望打印数据。我打电话给一个准备打印的特殊网站。在它的最后我有

    <script type="text/javascript">
        window.print(); 
        window.location.href="aktien.php";
    </script>
</body> 

当我遗漏window.location行时,我会得到打印对话框并可以打印页面,但当然它会在之后停止。

如果我没有省略该行,系统将直接转到aktien.php,无需打印对话且无需打印。

2 个答案:

答案 0 :(得分:0)

这是因为浏览器要求操作系统在.print()被命中时接管,然后移动到它自己处理的下一行。在操作系统显示打印对话框之前,它会进入下一行,然后将您移至新页面,整个新页面将接管新页面。

您可以延迟通话以移至新页面,直到打印对话框显示计时器为止:

<script type="text/javascript">
    window.print(); 
    // Defer the call to change the location just long enough 
    // for the OS to get the print dialog up on the screen. At that
    // point, the UI will become blocked and nothing will happen until
    // the dialog is cleared. Here, we're delaying by just 20 milliseconds.
    setTimeout(function(){
      window.location.href="aktien.php";
    }, 20);
</script>

答案 1 :(得分:0)

也许试试这个:

    <script type="text/javascript">
      window.onafterprint = function() {
        window.location.href="aktien.php";
      }

      window.print();
    </script>
</body> 

打印完成时应该触发window.onafterprint事件。

不,我还没有测试过。但这应该做你想要的。它应该等到打印结束,然后重定向到新页面。

我不知道如果取消打印对话框或打印失败会发生什么。但这应该是一个开始。