我有一个网站,用户点击阅读更多按钮,以便他们可以查看页面上的其他信息。我很好奇我是如何做到的,以便用户不必单独打印每个页面。我希望能够做到这一点,以便我可以有一个打印相关页面的脚本。我有人可以帮助我,并指出我正确的方向,我将不胜感激。我需要此功能才能在所有浏览器中使用。
由于
答案 0 :(得分:4)
使用媒体样式的样式表可以解决这个问题。它基本上就像有两个单独的样式表;一个用于打印,一个用于查看。为了保证带宽,请将printarea
置空,直到发出请求为止。在请求事件中填写printarea
以及您要完成的整个打印。我建议你研究一下jQuery及其加载和ajax请求。
@media screen
{
#screenarea
{
display: block;
}
#printarea
{
display: none;
}
}
@media print
{
#screenarea
{
display: none;
}
#printarea
{
display: block;
}
}
答案 1 :(得分:0)
我的直觉首先告诉我,它需要一个基于服务器的解决方案,因为window.print
函数只打印当前文档中的内容,并且您应该编写服务器代码以生成包含您要打印的所有页面,并从该页面调用window.print
。
但是你可以让jQuery为你工作,使用.load
函数下载要打印的页面,然后在加载所有页面之后,调用window.print
。如果由于某种原因你不能使用jQuery,你可以使用XHR自己编写整个管道。
如果没有关于您的网络应用程序结构的任何信息,很难提供更详细的答案。
答案 2 :(得分:0)
答案 3 :(得分:0)
通常,您不会使用JavaScript来访问多个页面并进行打印。 (如果它甚至可能,那听起来有点像黑客。)
相反,您可能希望有一个页面包含要打印的所有信息,用于printability的CSS样式,用户可以查看并能够打印。 (在这种情况下,您可以轻松使用JavaScript来启动打印操作。)
也许是一个“全部打印”链接,它将用户引导到一个页面(或打开一个新的target页面),其中包含所有打印信息?
你甚至可以更进一步,让它更有活力。可能在每个信息部分的标题旁边都有复选框,还有一个“打印已选择”按钮,可以将选择发布到服务器并仅将所选信息呈现给“全部打印”页面。
我只是觉得,作为一个用户,这将更多地遵循least astonishment而不是打印我甚至没有首先下载的东西的东西(在那里你也冒着发送过多的东西的风险)用户的打印机并浪费资源)。
修改强>:
刚刚发生的另一种方法。首先,所有内容都需要在不同的页面上吗?也许只是将内容放在默认隐藏的div
中,而“阅读更多”链接会显示关联的div
。那么你所需要的可印刷性就是前面提到的CSS媒体风格。在浏览器中查看时,他们可以单独展开/折叠信息部分,但是当打印页面时,所有内容都会展开。
答案 4 :(得分:0)
将所有内容放在一个网页中(使用注入或服务器进程)后,格式化页面使用@media打印的CSS属性,例如:
@media print {
h1 {page-break-before: always;}
}
其他属性是" page-break-after"和" page-break-inside",后者有助于避免内容中断。