我想要一个参赛表格(HTML5,CSS3,Chrome版本65.0.3325.181),并希望打印数据。我打电话给一个准备打印的特殊网站。在它的最后我有
<script type="text/javascript">
window.print();
window.location.href="aktien.php";
</script>
</body>
当我遗漏window.location
行时,我会得到打印对话框并可以打印页面,但当然它会在之后停止。
如果我没有省略该行,系统将直接转到aktien.php
,无需打印对话且无需打印。
答案 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
事件。
不,我还没有测试过。但这应该做你想要的。它应该等到打印结束,然后重定向到新页面。
我不知道如果取消打印对话框或打印失败会发生什么。但这应该是一个开始。