打开具有不同HTML内容的打印对话窗口

Lio*_*rom 7 html javascript css printing

为了打开当前页面的打印对话框,我们执行以下操作:

<a href="javascript:window.print()">Print</a>
Run Code Online (Sandbox Code Playgroud)

如何在当前页面中创建一个链接,该链接将打开与实际页面不同的上下文的打印对话框?


Chrome中的"打印"对话框: 在此输入图像描述

Lio*_*rom 10

打印对话框

在玩完(和一些谷歌搜索)后,我出来了这个解决方案:

non-printable在当前视图和printable类中添加了一个类到可打印的容器元素.在我的CSS中,我使用了css媒体查询 where @media screen@media printstates包含相应的显示行为:

@media screen {
  .printable { display: none; }
  .non-printable { display: block; }
}

@media print {
  .printable { display: block; }
  .non-printable { display: none; }
}
Run Code Online (Sandbox Code Playgroud)

现在,我可以打印当前视图中的新内容,而无需打开新选项卡或更改当前视图.

看看这个jsFiddle支持的浏览器列表.


Kev*_*son 8

我不确定这实际上是否是您问题的答案,因为您的问题很少详细说明您打开新窗口的含义.

如果你在/ page/one并且你想要一个链接打开/报告/页面并自动打开打印对话框......那么就像window.print在load事件上触发一样简单,例如

<body onload='window.print()'>
Run Code Online (Sandbox Code Playgroud)

如果您不希望该页面始终打开打印对话框,则/report/page?print=1在您要打印时创建指向新页面的链接或其他内容,并在URL中发现触发onload事件时.